scikit-learn 學習筆記 - Generalized Linear Models

Generalized Linear Models 官方文檔
Generalized Linear Models 中文文檔

用pandas來讀取數據

先把要導入的庫聲明瞭:

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
from sklearn import datasets, linear_model

data = pd.read_csv('xxx.csv')
data.head()#讀取前五行數據,如果是最後五行,用data.tail()

準備運行算法的數據

data.shape   #查看數據維度
X = data[['f1', 'f2', 'f3', 'f4']]  #樣本特徵
X.head()
y = data[['t']]  #樣本輸出
y.head()

劃分訓練集和測試集

 把X和y的樣本組合劃分成兩部分,一部分是訓練集,一部分是測試集,代碼如下:

X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=1)

查看下訓練集和測試集的維度:

print(X_train.shape, y_train.shape, X_test.shape, y_test.shape)

運行scikit-learn的線性模型

from sklearn.linear_model import LinearRegression
linreg = LinearRegression()
linreg.fit(X_train, y_train)`

模型係數結果:
print (linreg.intercept_)
print (linreg.coef_)

模型評價

#模型擬合測試集
y_pred = linreg.predict(X_test)
from sklearn import metrics
#用scikit-learn計算MSE
print ("MSE:",metrics.mean_squared_error(y_test, y_pred))
print ("RMSE:",np.sqrt(metrics.mean_squared_error(y_test, y_pred)))# 用scikit-learn計算RMSE

交叉驗證

採用10折交叉驗證,即cross_val_predict中的cv參數爲10:

X = data[['AT', 'V', 'AP', 'RH']]
y = data[['PE']]
from sklearn.model_selection import cross_val_predict
predicted = cross_val_predict(linreg, X, y, cv=10)
# 用scikit-learn計算MSE
print ("MSE:",metrics.mean_squared_error(y, predicted))
# 用scikit-learn計算RMSE
print ("RMSE:",np.sqrt(metrics.mean_squared_error(y, predicted)))

畫圖觀察結果

fig, ax = plt.subplots()
ax.scatter(y, predicted)
ax.plot([y.min(), y.max()], [y.min(), y.max()], 'k--', lw=4)
ax.set_xlabel('Measured')
ax.set_ylabel('Predicted')
plt.show()

點擊參考鏈接

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章