import pandas as pd
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.metrics import mean_squared_error,r2_score
data = pd.read_csv('./Desktop/汽車銷售數據.csv')
data.head()
#查看數據是否有空值
data.isnull().any()
out:
券代碼 False
日期 False
傳統汽車銷量 False
國內生產總值當季值(億元)x1 False
汽油價格(元/噸)x2 False
人民幣貸款基準利率%x3 False
汽車總產量(萬輛)x4 False
公路里程數 False
汽車整車股票指數 False
消費者信心指數 False
#去除空值
data = data.dropna()
#劃分訓練集與測試集
X = data.iloc[:,3:]
Y = data.iloc[:,2]
x_train,x_test,y_train,y_test = train_test_split(X,Y,test_size = 0.2,random_state = 1234)
#由於各特徵的範圍不一,需要標準化
ss = StandardScaler()
ss.fit(x_train)
x_train_ss = ss.transform(x_train)
x_test_ss = ss.transform(x_test)
#構建模型
lr = LinearRegression()
lr.fit(x_train_ss,y_train)
out:
LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None,
normalize=False)
#各特徵的係數
lr.coef_
out:
array([-14.97630252, 2.32553882, 1.41436362, 237.23659298,
3.42730138, 1.80472323, -4.99775286])
#截距
lr.intercept_
out:
430.7574509803923
y_pred = lr.predict(x_test_ss)
#輸出mse值
mean_squared_error(y_test,y_pred)
out:
19.500348658914465
#輸出R平方值
r2_score(y_test,y_pred)
out:
0.9995192568677627