版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
數(shù)據(jù)分析:回歸分析:回歸診斷與模型選擇1數(shù)據(jù)分析:回歸分析基礎(chǔ)1.1線性回歸模型簡介線性回歸是統(tǒng)計(jì)學(xué)中一種常用的數(shù)據(jù)分析方法,用于研究一個或多個自變量與一個因變量之間的關(guān)系。在最簡單的情況下,我們考慮一個簡單線性回歸模型,其中只有一個自變量。模型可以表示為:y其中,y是因變量,x是自變量,β0和β1是模型參數(shù),1.1.1示例代碼假設(shè)我們有以下數(shù)據(jù)集,表示學(xué)生的學(xué)習(xí)時(shí)間(小時(shí))與考試成績(分?jǐn)?shù))之間的關(guān)系:學(xué)習(xí)時(shí)間(小時(shí))考試成績(分?jǐn)?shù))265575370885780我們可以使用Python的statsmodels庫來擬合一個簡單線性回歸模型:importstatsmodels.apiassm
importpandasaspd
importnumpyasnp
#創(chuàng)建數(shù)據(jù)集
data={'學(xué)習(xí)時(shí)間':[2,5,3,8,7],'考試成績':[65,75,70,85,80]}
df=pd.DataFrame(data)
#添加常數(shù)項(xiàng)
df['常數(shù)項(xiàng)']=1
#選擇自變量和因變量
X=df['常數(shù)項(xiàng)']
y=df['考試成績']
#擬合模型
X=sm.add_constant(X)#添加常數(shù)項(xiàng)
model=sm.OLS(y,X).fit()
print(model.summary())這段代碼首先創(chuàng)建了一個包含學(xué)習(xí)時(shí)間和考試成績的數(shù)據(jù)框,然后使用sm.add_constant函數(shù)添加了一個常數(shù)項(xiàng),最后使用sm.OLS函數(shù)擬合模型并打印模型摘要。1.2最小二乘法原理最小二乘法是一種用于估計(jì)線性回歸模型參數(shù)的方法。其目標(biāo)是最小化殘差平方和(RSS),即模型預(yù)測值與實(shí)際觀測值之間的差異的平方和。對于簡單線性回歸模型,RSS可以表示為:R通過求導(dǎo)并設(shè)置導(dǎo)數(shù)為零,我們可以找到β0和β1.2.1示例代碼使用最小二乘法手動計(jì)算回歸系數(shù):#手動計(jì)算最小二乘估計(jì)
x=df['學(xué)習(xí)時(shí)間']
y=df['考試成績']
#計(jì)算x和y的均值
x_mean=np.mean(x)
y_mean=np.mean(y)
#計(jì)算斜率和截距
numerator=np.sum((x-x_mean)*(y-y_mean))
denominator=np.sum((x-x_mean)**2)
beta_1=numerator/denominator
beta_0=y_mean-(beta_1*x_mean)
#打印結(jié)果
print(f'斜率估計(jì):{beta_1}')
print(f'截距估計(jì):{beta_0}')這段代碼計(jì)算了學(xué)習(xí)時(shí)間和考試成績的均值,然后使用這些均值和數(shù)據(jù)點(diǎn)來計(jì)算斜率和截距的最小二乘估計(jì)。1.3回歸系數(shù)的解釋回歸系數(shù)β1表示自變量x每增加一個單位,因變量y的平均變化量。而β0是當(dāng)自變量x為0時(shí),因變量1.3.1示例解釋在上述學(xué)習(xí)時(shí)間與考試成績的例子中,假設(shè)我們得到的回歸系數(shù)為β0=501.4假設(shè)檢驗(yàn)與置信區(qū)間假設(shè)檢驗(yàn)用于確定回歸系數(shù)是否顯著不同于零。通常,我們使用t檢驗(yàn)來評估單個回歸系數(shù)的顯著性。置信區(qū)間則提供了回歸系數(shù)可能值的范圍。1.4.1示例代碼使用statsmodels庫的模型摘要來查看假設(shè)檢驗(yàn)和置信區(qū)間:#查看模型摘要
print(model.summary())
#輸出:
#OLSRegressionResults
#==============================================================================
#Dep.Variable:考試成績R-squared:0.820
#Model:OLSAdj.R-squared:0.760
#Method:LeastSquaresF-statistic:15.00
#Date:Tue,28Mar2023Prob(F-statistic):0.0497
#Time:12:00:00Log-Likelihood:-19.900
#No.Observations:5AIC:43.80
#DfResiduals:3BIC:43.84
#DfModel:1
#CovarianceType:nonrobust
#==============================================================================
#coefstderrtP>|t|[0.0250.975]
#
#常數(shù)項(xiàng)50.00005.00010.0000.00035.00065.000
#學(xué)習(xí)時(shí)間5.00001.2913.8720.0491.4628.538
#==============================================================================
#Omnibus:0.000Durbin-Watson:2.000
#Prob(Omnibus):1.000Jarque-Bera(JB):0.000
#Skew:0.000Prob(JB):1.000
#Kurtosis:3.000Cond.No.1.00
#==============================================================================
#注意:該結(jié)果是基于示例數(shù)據(jù)生成的,實(shí)際結(jié)果可能有所不同。在模型摘要中,我們可以看到學(xué)習(xí)時(shí)間的系數(shù)為5.0000,標(biāo)準(zhǔn)誤差為1.291,t統(tǒng)計(jì)量為3.872,p值為0.049。這表明學(xué)習(xí)時(shí)間與考試成績之間的關(guān)系是統(tǒng)計(jì)上顯著的(p<0.05)。置信區(qū)間為[1.462,8.538],表示在95%的置信水平下,學(xué)習(xí)時(shí)間每增加1小時(shí),考試成績增加的分?jǐn)?shù)在1.462到8.538分之間。通過以上內(nèi)容,我們深入了解了線性回歸模型的基礎(chǔ),包括模型的數(shù)學(xué)表示、最小二乘法的原理、回歸系數(shù)的解釋以及如何進(jìn)行假設(shè)檢驗(yàn)和計(jì)算置信區(qū)間。這些知識對于進(jìn)行回歸分析和理解數(shù)據(jù)之間的關(guān)系至關(guān)重要。2回歸診斷2.1殘差分析殘差分析是回歸診斷中的關(guān)鍵步驟,用于檢查模型的假設(shè)是否成立,以及模型是否適當(dāng)?shù)財(cái)M合了數(shù)據(jù)。殘差是觀測值與模型預(yù)測值之間的差異,理想情況下,這些殘差應(yīng)該隨機(jī)分布,沒有明顯的模式或趨勢。2.1.1檢查殘差的正態(tài)性正態(tài)性檢驗(yàn)是通過檢查殘差是否遵循正態(tài)分布來進(jìn)行的。這可以通過繪制殘差的直方圖或Q-Q圖來實(shí)現(xiàn)。importnumpyasnp
importpandasaspd
importseabornassns
importmatplotlib.pyplotasplt
fromscipyimportstats
fromsklearn.linear_modelimportLinearRegression
#假設(shè)數(shù)據(jù)
np.random.seed(0)
x=np.random.rand(100)
y=2+3*x+np.random.randn(100)
#創(chuàng)建DataFrame
df=pd.DataFrame({'x':x,'y':y})
#擬合線性回歸模型
model=LinearRegression()
model.fit(df[['x']],df['y'])
#計(jì)算殘差
df['residuals']=df['y']-model.predict(df[['x']])
#繪制殘差的直方圖
sns.histplot(df['residuals'],kde=True)
plt.title('殘差的直方圖')
plt.show()
#繪制Q-Q圖
bplot(df['residuals'],dist="norm",plot=plt)
plt.title('殘差的Q-Q圖')
plt.show()2.1.2檢查殘差的均值為零殘差的均值應(yīng)該接近于零,這表明模型沒有系統(tǒng)性地過高或過低預(yù)測。#計(jì)算殘差的均值
mean_residuals=df['residuals'].mean()
print(f'殘差的均值:{mean_residuals}')2.1.3檢查殘差的恒定方差殘差的方差應(yīng)該在整個預(yù)測范圍內(nèi)保持恒定,這稱為同方差性。如果方差隨預(yù)測值的增加而增加,這稱為異方差性。#繪制殘差圖
sns.scatterplot(x='y',y='residuals',data=df)
plt.title('殘差圖')
plt.show()2.2異方差性檢測異方差性檢測用于檢查殘差的方差是否隨預(yù)測值的變化而變化。常見的檢測方法包括Breusch-Pagan檢驗(yàn)和White檢驗(yàn)。2.2.1Breusch-Pagan檢驗(yàn)fromstatsmodels.stats.diagnosticimporthet_breushpagan
#進(jìn)行Breusch-Pagan檢驗(yàn)
bp_test=het_breushpagan(df['residuals'],df[['x']])
print(f'BP檢驗(yàn)結(jié)果:{bp_test}')2.2.2White檢驗(yàn)fromstatsmodels.stats.diagnosticimporthet_white
#進(jìn)行White檢驗(yàn)
white_test=het_white(df['residuals'],df[['x']])
print(f'White檢驗(yàn)結(jié)果:{white_test}')2.3多重共線性診斷多重共線性是指模型中的自變量之間存在高度相關(guān)性,這可能導(dǎo)致回歸系數(shù)的不穩(wěn)定和顯著性測試的不準(zhǔn)確。VIF(方差膨脹因子)是診斷多重共線性的常用方法。2.3.1計(jì)算VIFfromstatsmodels.stats.outliers_influenceimportvariance_inflation_factor
#計(jì)算VIF
vif=pd.DataFrame()
vif["VIFFactor"]=[variance_inflation_factor(df.values,i)foriinrange(df.shape[1])]
vif["features"]=df.columns
print(vif)2.4自相關(guān)性檢查自相關(guān)性檢查用于確定殘差是否隨時(shí)間或順序相關(guān)。這在時(shí)間序列數(shù)據(jù)中尤為重要。Durbin-Watson檢驗(yàn)是檢查自相關(guān)性的常用方法。2.4.1Durbin-Watson檢驗(yàn)fromstatsmodels.stats.stattoolsimportdurbin_watson
#進(jìn)行Durbin-Watson檢驗(yàn)
dw_test=durbin_watson(df['residuals'])
print(f'Durbin-Watson檢驗(yàn)結(jié)果:{dw_test}')2.4.2解釋Durbin-Watson檢驗(yàn)結(jié)果Durbin-Watson的值在0到4之間,值接近2表示殘差沒有自相關(guān)性,小于2表示正自相關(guān),大于2表示負(fù)自相關(guān)。2.5模型選擇模型選擇是基于一系列標(biāo)準(zhǔn)來確定最佳回歸模型的過程。常見的標(biāo)準(zhǔn)包括AIC(赤池信息準(zhǔn)則)、BIC(貝葉斯信息準(zhǔn)則)和調(diào)整后的R2。2.5.1AIC和BICfromstatsmodels.formula.apiimportols
#使用statsmodels進(jìn)行模型擬合
result=ols('y~x',data=df).fit()
#輸出AIC和BIC
print(f'AIC:{result.aic}')
print(f'BIC:{result.bic}')2.5.2調(diào)整后的R2調(diào)整后的R2考慮了模型復(fù)雜度的影響,通常比R2更可靠。#輸出調(diào)整后的R2
print(f'調(diào)整后的R2:{result.rsquared_adj}')通過比較不同模型的這些標(biāo)準(zhǔn),可以選擇最合適的模型。較低的AIC和BIC值以及較高的調(diào)整后的R2值通常表示更好的模型擬合。3數(shù)據(jù)分析:回歸分析:模型選擇與評估3.1模型選擇與評估3.1.1AIC與BIC準(zhǔn)則AIC(AkaikeInformationCriterion)和BIC(BayesianInformationCriterion)是兩種常用的模型選擇準(zhǔn)則,用于在多個候選模型中選擇最優(yōu)模型。它們通過平衡模型的擬合度和復(fù)雜度來避免過擬合。AIC準(zhǔn)則AIC定義為:A其中,k是模型中參數(shù)的數(shù)量,L是最大似然估計(jì)。AIC越小,模型越優(yōu)。BIC準(zhǔn)則BIC定義為:B其中,n是樣本數(shù)量。BIC在AIC的基礎(chǔ)上增加了對樣本量的懲罰,因此在樣本量較大時(shí),BIC傾向于選擇更簡單的模型。示例代碼importstatsmodels.apiassm
importnumpyasnp
#生成模擬數(shù)據(jù)
np.random.seed(0)
x=np.random.rand(100)
y=2+3*x+np.random.randn(100)
#構(gòu)建模型
X=sm.add_constant(x)
model=sm.OLS(y,X)
results=model.fit()
#輸出AIC和BIC
print("AIC:",results.aic)
print("BIC:",results.bic)3.1.2交叉驗(yàn)證方法交叉驗(yàn)證是一種評估模型泛化能力的方法,通過將數(shù)據(jù)集分為訓(xùn)練集和驗(yàn)證集,多次訓(xùn)練和驗(yàn)證模型,以獲得更穩(wěn)定的性能評估。K折交叉驗(yàn)證將數(shù)據(jù)集隨機(jī)分為K個子集,每次將其中一個子集作為驗(yàn)證集,其余K?1個子集作為訓(xùn)練集,重復(fù)示例代碼fromsklearn.model_selectionimportKFold
fromsklearn.linear_modelimportLinearRegression
fromsklearn.datasetsimportload_boston
fromsklearn.metricsimportmean_squared_error
#加載數(shù)據(jù)
data=load_boston()
X,y=data.data,data.target
#定義K折交叉驗(yàn)證
kf=KFold(n_splits=5,shuffle=True,random_state=42)
#初始化模型
model=LinearRegression()
#進(jìn)行交叉驗(yàn)證
mse_scores=[]
fortrain_index,val_indexinkf.split(X):
X_train,X_val=X[train_index],X[val_index]
y_train,y_val=y[train_index],y[val_index]
#訓(xùn)練模型
model.fit(X_train,y_train)
#驗(yàn)證模型
y_pred=model.predict(X_val)
mse=mean_squared_error(y_val,y_pred)
mse_scores.append(mse)
#輸出平均MSE
print("AverageMSE:",np.mean(mse_scores))3.1.3模型復(fù)雜度與過擬合模型復(fù)雜度是指模型的自由度或參數(shù)數(shù)量。過擬合是指模型在訓(xùn)練數(shù)據(jù)上表現(xiàn)很好,但在新數(shù)據(jù)上表現(xiàn)較差的現(xiàn)象。通常,模型復(fù)雜度越高,過擬合的風(fēng)險(xiǎn)越大。示例代碼fromsklearn.linear_modelimportRidge
fromsklearn.model_selectionimporttrain_test_split
#加載數(shù)據(jù)
X,y=load_boston(return_X_y=True)
#劃分訓(xùn)練集和測試集
X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.2,random_state=42)
#不同復(fù)雜度的模型
alphas=[0.1,1.0,10.0]
foralphainalphas:
model=Ridge(alpha=alpha)
model.fit(X_train,y_train)
#計(jì)算訓(xùn)練集和測試集的MSE
train_mse=mean_squared_error(y_train,model.predict(X_train))
test_mse=mean_squared_error(y_test,model.predict(X_test))
print(f"Alpha:{alpha},TrainMSE:{train_mse},TestMSE:{test_mse}")3.1.4特征選擇技術(shù)特征選擇是指從原始特征中選擇最相關(guān)的特征,以提高模型的性能和解釋性,同時(shí)減少計(jì)算成本。Lasso回歸Lasso回歸通過添加L1正則化項(xiàng)來實(shí)現(xiàn)特征選擇,將不重要的特征系數(shù)壓縮至0。示例代碼fromsklearn.linear_modelimportLasso
#加載數(shù)據(jù)
X,y=load_boston(return_X_y=True)
#Lasso回歸模型
model=Lasso(alpha=0.1)
model.fit(X,y)
#輸出非零系數(shù)的特征
selected_features=np.where(model.coef_!=0)[0]
print("SelectedFeatures:",selected_features)前向選擇前向選擇是一種逐步特征選擇方法,從空集開始,每次選擇一個最能提高模型性能的特征加入模型。示例代碼fromsklearn.feature_selectionimportSequentialFeatureSelector
#加載數(shù)據(jù)
X,y=load_boston(return_X_y=True)
#初始化模型和特征選擇器
model=LinearRegression()
sfs=SequentialFeatureSelector(model,n_features_to_select=5,direction='forward')
#進(jìn)行特征選擇
sfs.fit(X,y)
#輸出選擇的特征
selected_features=sfs.get_support(indices=True)
print("SelectedFeatures:",selected_features)后向消除后向消除與前向選擇相反,從所有特征開始,每次移除一個最不影響模型性能的特征。示例代碼#初始化模型和特征選擇器
sfs_backward=SequentialFeatureSelector(model,n_features_to_select=5,direction='backward')
#進(jìn)行特征選擇
sfs_backward.fit(X,y)
#輸出選擇的特征
selected_features_backward=sfs_backward.get_support(indices=True)
print("SelectedFeatures(Backward):",selected_features_backward)通過以上方法,我們可以有效地進(jìn)行模型選擇與評估,避免過擬合,同時(shí)選擇最相關(guān)的特征,提高模型的性能和解釋性。4高級回歸模型4.1多項(xiàng)式回歸4.1.1原理多項(xiàng)式回歸是一種線性回歸的擴(kuò)展,它通過引入變量的高次冪來擬合非線性數(shù)據(jù)。在多項(xiàng)式回歸中,我們假設(shè)因變量與自變量之間的關(guān)系可以表示為一個多項(xiàng)式函數(shù)。例如,一個二次多項(xiàng)式回歸模型可以表示為:y其中,y是因變量,x是自變量,β0,β4.1.2示例假設(shè)我們有一組數(shù)據(jù),表示了房屋面積與價(jià)格之間的關(guān)系,但這種關(guān)系并不是線性的。我們可以使用二次多項(xiàng)式回歸來擬合數(shù)據(jù)。importnumpyasnp
importpandasaspd
importmatplotlib.pyplotasplt
fromsklearn.preprocessingimportPolynomialFeatures
fromsklearn.linear_modelimportLinearRegression
fromsklearn.pipelineimportmake_pipeline
#創(chuàng)建數(shù)據(jù)
np.random.seed(0)
x=2-3*np.random.normal(0,1,20)
y=x-2*(x**2)+0.5*(x**3)+np.random.normal(-3,3,20)
#轉(zhuǎn)換為DataFrame
df=pd.DataFrame({'x':x,'y':y})
#繪制原始數(shù)據(jù)
plt.scatter(df['x'],df['y'],color='blue')
plt.title('原始數(shù)據(jù)')
plt.xlabel('x')
plt.ylabel('y')
plt.show()
#使用多項(xiàng)式回歸擬合數(shù)據(jù)
model=make_pipeline(PolynomialFeatures(2),LinearRegression())
model.fit(df[['x']],df['y'])
#預(yù)測
x_new=np.linspace(-2,2,100)
y_new=model.predict(x_new[:,np.newaxis])
#繪制擬合曲線
plt.scatter(df['x'],df['y'],color='blue')
plt.plot(x_new,y_new,color='red',linewidth=3)
plt.title('二次多項(xiàng)式回歸擬合')
plt.xlabel('x')
plt.ylabel('y')
plt.show()4.2嶺回歸與Lasso回歸4.2.1原理嶺回歸和Lasso回歸是兩種正則化線性回歸方法,用于處理多重共線性和特征選擇問題。嶺回歸:通過在損失函數(shù)中加入L2正則化項(xiàng),即所有回歸系數(shù)的平方和的λ倍,來減少模型的復(fù)雜度,防止過擬合。損失函數(shù)變?yōu)椋篖Lasso回歸:通過在損失函數(shù)中加入L1正則化項(xiàng),即所有回歸系數(shù)絕對值的λ倍,來實(shí)現(xiàn)特征選擇,將不重要的特征的系數(shù)壓縮至0。損失函數(shù)變?yōu)椋篖4.2.2示例使用sklearn庫中的Lasso和Ridge模型來處理一個具有多重共線性的數(shù)據(jù)集。importnumpyasnp
importpandasaspd
fromsklearn.linear_modelimportRidge,Lasso
fromsklearn.model_selectionimporttrain_test_split
fromsklearn.metricsimportmean_squared_error
#創(chuàng)建數(shù)據(jù)
np.random.seed(0)
X=np.random.rand(100,2)
y=2*X[:,0]+3*X[:,1]+np.random.randn(100)
#添加多重共線性
X[:,1]=X[:,0]+np.random.randn(100)*0.1
#劃分?jǐn)?shù)據(jù)集
X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.2,random_state=42)
#嶺回歸
ridge=Ridge(alpha=1.0)
ridge.fit(X_train,y_train)
ridge_pred=ridge.predict(X_test)
ridge_mse=mean_squared_error(y_test,ridge_pred)
#Lasso回歸
lasso=Lasso(alpha=0.1)
lasso.fit(X_train,y_train)
lasso_pred=lasso.predict(X_test)
lasso_mse=mean_squared_error(y_test,lasso_pred)
print("嶺回歸MSE:",ridge_mse)
print("Lasso回歸MSE:",lasso_mse)4.3非線性回歸模型4.3.1原理非線性回歸模型用于擬合因變量與自變量之間非線性關(guān)系的數(shù)據(jù)。與多項(xiàng)式回歸不同,非線性回歸模型的函數(shù)形式更加靈活,可以是任何非線性函數(shù)。例如,指數(shù)函數(shù)、對數(shù)函數(shù)、冪函數(shù)等。4.3.2示例使用scipy庫中的curve_fit函數(shù)來擬合一個指數(shù)函數(shù)。importnumpyasnp
importmatplotlib.pyplotasplt
fromscipy.optimizeimportcurve_fit
#定義指數(shù)函數(shù)
defexp_func(x,a,b,c):
returna*np.exp(-b*x)+c
#創(chuàng)建數(shù)據(jù)
np.random.seed(0)
x=np.linspace(0,4,50)
y=exp_func(x,2.5,1.3,0.5)+np.random.normal(0,0.2,50)
#繪制原始數(shù)據(jù)
plt.scatter(x,y,color='blue')
plt.title('原始數(shù)據(jù)')
plt.xlabel('x')
plt.ylabel('y')
plt.show()
#使用curve_fit擬合指數(shù)函數(shù)
popt,pcov=curve_fit(exp_func,x,y)
#預(yù)測
y_fit=exp_func(x,*popt)
#繪制擬合曲線
plt.scatter(x,y,color='blue')
plt.plot(x,y_fit,color='red',linewidth=3)
plt.title('指數(shù)函數(shù)擬合')
plt.xlabel('x')
plt.ylabel('y')
plt.show()4.4分位數(shù)回歸4.4.1原理分位數(shù)回歸是一種統(tǒng)計(jì)方法,用于估計(jì)因變量在不同分位數(shù)上的條件分布。與傳統(tǒng)的最小二乘回歸不同,分位數(shù)回歸最小化的是絕對誤差的加權(quán)和,權(quán)重由分位數(shù)決定。例如,對于τ分位數(shù)的回歸,損失函數(shù)為:L其中,ρτρ4.4.2示例使用statsmodels庫中的QuantReg模型來估計(jì)不同分位數(shù)上的回歸線。importnumpyasnp
importpandasaspd
importmatplotlib.pyplotasplt
importstatsmodels.apiassm
fromstatsmodels.formula.apiimportols,QuantReg
#創(chuàng)建數(shù)據(jù)
np.random.seed(0)
x=np.random.rand(100)
y=2*x+np.random.randn(100)
#添加非線性關(guān)系
y[x>0.5]=y[x>0.5]+2*(x[x>0.5]-0.5)
#繪制原始數(shù)據(jù)
plt.scatter(x,y,color='blue')
plt.title('原始數(shù)據(jù)')
plt.xlabel('x')
plt.ylabel('y')
plt.show()
#分位數(shù)回歸
q=[0.25,0.5,0.75]
models=[QuantReg(y,sm.add_constant(x)).fit(q=q_i)forq_iinq]
#繪制不同分位數(shù)的回歸線
plt.scatter(x,y,color='blue')
formodelinmodels:
plt.plot(x,model.params[0]+model.params[1]*x,color='red',linewidth=3)
plt.title('分位數(shù)回歸')
plt.xlabel('x')
plt.ylabel('y')
plt.legend(['q=0.25','q=0.5','q=0.75'])
plt.show()5實(shí)際案例分析:回歸分析中的數(shù)據(jù)預(yù)處理、模型構(gòu)建、診斷與選擇5.1數(shù)據(jù)預(yù)處理步驟在進(jìn)行回歸分析之前,數(shù)據(jù)預(yù)處理是至關(guān)重要的一步。它包括數(shù)據(jù)清洗、特征工程和數(shù)據(jù)轉(zhuǎn)換,確保模型訓(xùn)練在高質(zhì)量數(shù)據(jù)上進(jìn)行。5.1.1數(shù)據(jù)清洗數(shù)據(jù)清洗涉及處理缺失值、異常值和重復(fù)數(shù)據(jù)。例如,使用Pandas庫處理缺失值:importpandasaspd
#加載數(shù)據(jù)
data=pd.read_csv('data.csv')
#檢查缺失值
print(data.isnull().sum())
#刪除含有缺失值的行
data=data.dropna()
#或者填充缺失值
data['age'].fillna(data['age'].mean(),inplace=True)5.1.2特征工程特征工程包括創(chuàng)建新特征、選擇重要特征和編碼分類變量。例如,使用get_dummies函數(shù)編碼分類變量:#將分類變量轉(zhuǎn)換為虛擬變量
data=pd.get_dummies(data,columns=['gender'])5.1.3數(shù)據(jù)轉(zhuǎn)換數(shù)據(jù)轉(zhuǎn)換如標(biāo)準(zhǔn)化或歸一化,可以提高模型性能。例如,使用StandardScaler進(jìn)行特征縮放:fromsklearn.preprocessingimportStandardScaler
#創(chuàng)建標(biāo)準(zhǔn)化器
scaler=StandardScaler()
#選擇需要標(biāo)準(zhǔn)化的特征
features_to_scale=['age','income']
#應(yīng)用標(biāo)準(zhǔn)化
data[features_to_scale]=scaler.fit_transform(data[features_to_scale])5.2模型構(gòu)建與診斷流程5.2.1構(gòu)建模型使用線性回歸模型作為示例:fromsklearn.linear_modelimportLinearRegression
fromsklearn.model_selectionimporttrain_test_split
#分割數(shù)據(jù)集
X_train,X_test,y_train,y_test=train_test_split(data.drop('price',axis=1),data['price'],test_size=0.2,random_state=42)
#創(chuàng)建線性回歸模型
model
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年四川客運(yùn)資格證模擬考試題庫
- 2024年?duì)I口道路運(yùn)輸客運(yùn)從業(yè)資格證考試
- 教科版科學(xué)二年級上冊全冊教案(一)
- 2024年遼寧省沈陽市沈北新區(qū)民政局招聘100人歷年高頻500題難、易錯點(diǎn)模擬試題附帶答案詳解
- 2024年遼寧省撫順縣公安局招聘輔警人員6人歷年高頻500題難、易錯點(diǎn)模擬試題附帶答案詳解
- 2024年遼寧沈陽理工大學(xué)招聘高層次人才10人(第三批)高頻500題難、易錯點(diǎn)模擬試題附帶答案詳解
- 2024年遼寧大連金普新區(qū)社區(qū)文職警員公基公益講座歷年高頻500題難、易錯點(diǎn)模擬試題附帶答案詳解
- 2024年贛州市林業(yè)局引進(jìn)林業(yè)專業(yè)人才歷年高頻500題難、易錯點(diǎn)模擬試題附帶答案詳解
- 2024年貴港市港南區(qū)人民法院編制外招聘工作人員歷年高頻500題難、易錯點(diǎn)模擬試題附帶答案詳解
- 2024年貴州黔南甕安縣統(tǒng)一招聘事業(yè)單位工作人員200人高頻500題難、易錯點(diǎn)模擬試題附帶答案詳解
- 供港活牛供宰合同書
- 企業(yè)瑜伽課合同范本
- 2024輔警綜合必刷題
- 30題激光工程師崗位常見面試問題含HR問題考察點(diǎn)及參考回答
- 2024年軍隊(duì)文職統(tǒng)一考試《專業(yè)科目》管理學(xué)試卷(網(wǎng)友回憶版)
- 初中歷史教學(xué)經(jīng)驗(yàn)總結(jié)
- 《1.3 空間向量及其運(yùn)算的坐標(biāo)表示》課件與同步練習(xí)
- 2024江西省水利投資集團(tuán)限公司秋季校園招聘116人高頻考題難、易錯點(diǎn)模擬試題(共500題)附帶答案詳解
- 2024年全省青少年航天知識大賽題庫一附答案
- 2024全國中小學(xué)生語文素養(yǎng)大賽知識素養(yǎng)試題庫及答案
- MOOC 知識創(chuàng)新與學(xué)術(shù)規(guī)范-南京大學(xué) 中國大學(xué)慕課答案
評論
0/150
提交評論