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

Generalized Linear Models ( 广义线性模型 )

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

在整个模块中,我们指定向量  as coef_ 和 w_0 as  intercept_

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

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

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

LinearRegression ( 线性回归 ) 将采用其拟合方法数组 X , y 并将其线性模型的系数 w 存储在其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])

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

线性模型例子:

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Soyoger

听说打赏的都进了福布斯排行榜。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值