您的位置:首页 > 其它

scikit-learn学习笔记(三)Generalized Linear Models ( 广义线性模型 )

2017-07-28 09:08 531 查看

Generalized Linear Models ( 广义线性模型 )

以下是一组用于回归的方法,其中目标值预期是输入变量的线性组合。在数学概念中,如果 

 是预测值。



在整个模块中,我们指定向量 

 as coef_
和 

 as  intercept_


要使用广义线性回归执行分类,请参阅
Logistic 回归。

Ordinary Least Squares ( 普通最小二乘法 )

LinearRegression 线性回归拟合具有系数 

 的线性模型,以最小化数据集中observed
responses
(  观察到的响应 )之间的残差平方和responses predicted by the linear approximation ( 通过线性近似预测的响应 ):







LinearRegression (
线性回归 ) 将采用其拟合方法数组 X , y 并将其线性模型的系数


 存储在其coef_ 成员中:

然而,普通最小二乘的系数估计依赖于模型项的独立性。当术语相关并且设计矩阵


 的列具有近似的线性相关性时,设计矩阵变得接近于单数,并且因此最小二乘估计对观察到的响应中的随机误差变得高度敏感,产生大的方差。例如,当没有实验设计收集数据时,可能会出现这种多重共线性的情况。

线性模型例子:

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 ( 奇异值分解 ) 来计算最小二乘解。如果Xsize(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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐