scikit-learn学习笔记(三)Generalized Linear Models ( 广义线性模型 )
Generalized Linear Models ( 廣義線性模型 )
以下是一組用于回歸的方法,其中目標值預期是輸入變量的線性組合。在數學概念中,如果??是預測值。
在整個模塊中,我們指定向量??as?coef_ 和??as??intercept_ 。
要使用廣義線性回歸執行分類,請參閱 Logistic 回歸。
Ordinary Least Squares ( 普通最小二乘法?)
LinearRegression?線性回歸擬合具有系數??的線性模型,以最小化數據集中observed responses ( ?觀察到的響應?)之間的殘差平方和responses predicted by the linear approximation ( 通過線性近似預測的響應?):
LinearRegression ( 線性回歸?) 將采用其擬合方法數組 X , y 并將其線性模型的系數 ?存儲在其coef_ 成員中:
| >>> from sklearn import linear_model >>> reg = linear_model.LinearRegression() >>> reg.fit ([[0, 0], [1, 1], [2, 2]], [0, 1, 2]) LinearRegression(copy_X=True, fit_intercept=True, n_jobs=1, normalize=False) >>> reg.coef_ array([ 0.5,? 0.5]) |
然而,普通最小二乘的系數估計依賴于模型項的獨立性。當術語相關并且設計矩陣 ?的列具有近似的線性相關性時,設計矩陣變得接近于單數,并且因此最小二乘估計對觀察到的響應中的隨機誤差變得高度敏感,產生大的方差。例如,當沒有實驗設計收集數據時,可能會出現這種多重共線性的情況。
線性模型例子:
import matplotlib.pyplot as plt import numpy as np from sklearn import datasets, linear_model# Load the diabetes dataset diabetes = datasets.load_diabetes()# Use only one feature diabetes_X = diabetes.data[:, np.newaxis, 2]# Split the data into training/testing sets diabetes_X_train = diabetes_X[:-20] diabetes_X_test = diabetes_X[-20:]# Split the targets into training/testing sets diabetes_y_train = diabetes.target[:-20] diabetes_y_test = diabetes.target[-20:]# Create linear regression object regr = linear_model.LinearRegression()# Train the model using the training sets regr.fit(diabetes_X_train, diabetes_y_train)# The coefficients print('Coefficients: \n', regr.coef_) # The mean squared error print("Mean squared error: %.2f"% np.mean((regr.predict(diabetes_X_test) - diabetes_y_test) ** 2)) # Explained variance score: 1 is perfect prediction print('Variance score: %.2f' % regr.score(diabetes_X_test, diabetes_y_test))# Plot outputs plt.scatter(diabetes_X_test, diabetes_y_test, color='black') plt.plot(diabetes_X_test, regr.predict(diabetes_X_test), color='blue',linewidth=3)plt.xticks(()) plt.yticks(())plt.show()
Ordinary Least Squares Complexity ( 普通最小二乘法復雜度 )
該方法使用 X 的 singular value decomposition ( 奇異值分解?)?來計算最小二乘解。如果X 是size(n, p) 的矩陣,則該方法的成本為 ,假設。
自己寫的一個例子:
1. 數據格式
x,y
1,2
2,4
3,6
4,9
5,10
6,12
7,15
8,16
9,18
10,19
12,23
13,26
14,28
15,31
20,40
21,50
2.代碼
import matplotlib.pyplot as plt
import pandas as pd
from sklearn import linear_model
data = pd.read_csv('F:\\tempdata\\python\ml\\linear.csv')
print data.describe()
X_train = data['x'].values.reshape(-1, 1)
print X_train
Y_train = data['y']
print '***************'
regr = linear_model.LinearRegression()
regr.fit(X_train, Y_train)
print '***************'
print regr.coef_
print regr.intercept_
plt.scatter(X_train, Y_train,? color='black')
diabetes_X_test = [[2],[5],[10]]
print diabetes_X_test
diabetes_y_test = regr.predict(diabetes_X_test)
print regr.score(diabetes_X_test, diabetes_y_test)
plt.plot(diabetes_X_test, regr.predict(diabetes_X_test), color='blue',linewidth=3)
plt.xticks(())
plt.yticks(())
plt.show()
3.結果
?????????????? x????????? y
count? 19.000000? 19.000000
mean?? 13.421053? 28.157895
std??? 11.211679? 24.356754
min???? 1.000000?? 2.000000
25%???? 5.500000? 11.000000
50%??? 10.000000? 19.000000
75%??? 17.500000? 35.500000
max??? 40.000000? 84.000000
[[ 1]
?[ 2]
?[ 3]
?...,
?[30]
?[35]
?[40]]
***************
***************
[ 2.16417772]
-0.8876482903
[[2], [5], [10]]
1.0
總結
以上是生活随笔為你收集整理的scikit-learn学习笔记(三)Generalized Linear Models ( 广义线性模型 )的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: scikit-learn学习笔记(二)l
- 下一篇: Scala中zip或者zipWithIn