您的位置:首页 > 编程语言 > Python开发

python数据分析---实用数据挖掘(五)

2018-03-31 16:09 309 查看
线性回归
线性回归是用于二分类的一种模型。
y = a + bx
求解的方法就是最小二乘法。也就是残差平方和进行对a,b的求导。之前文章有讲过。其实就是对a,b求导,然后导数为0就可以解出。



但是事实上线性回归并不会有很好的效果。import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0,800,10000)
np.random.seed(1)
y = 400 + np.random.random(10000)*400 + x * 0.002
plt.figure(figsize = [8,6])
plt.scatter(x , y , s=0.2)
plt.show()


from sklearn.linear_model import LinearRegression
lr = LinearRegression()
lr.fit(x.reshape(-1,1) , y)
y_hat = lr.predict(x.reshape(-1,1))
plt.figure(figsize = [8,6])
plt.scatter(x , y , s=0.2)
plt.plot(x , 600+x*0.002 , '--' , c = 'blue')
plt.show()


效果其实不好,斜率基本是0。
因为线性回归是某一次抽样进行计算,如果点分的太开,每一次的抽样变化会很大。所以用处不大。所以数据方差越大,那么线性回归基本就没有什么用处了。





sklearn计算线性回归import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn import datasets , linear_model , metrics
from sklearn.cross_validation import train_test_split
boston = datasets.load_boston()#波士顿房价数据集的加载
x = boston.data
y = boston.target
x_train , x_test ,y_train , y_test = train_test_split(x , y ,test_size = 0.3 , random_state = 1)
lm = linear_model.LinearRegression()
y_predict = lm.predict(x_test)
想要得到其他参数还得调用其他得到。

statsModels计算线性回归import statsmodels.api as sm
df = pd.DataFrame(data=boston.data , columns=boston.feature_names)
y = pd.DataFrame(boston.target , columns = ['MEDV'])
x = df[['RM','CRIM']]
x = sm.add_constant(x)#这个模型是默认没有截距的,如果不加是经过原点的
model = sm.OLS(y,x).fit()
model.summary()



这个就显得很专业了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: