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
statsModels计算线性回归import statsmodels.api as sm
这个就显得很专业了。
线性回归是用于二分类的一种模型。
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()
这个就显得很专业了。
相关文章推荐
- python数据分析---实用数据挖掘(七)
- python数据分析---实用数据挖掘(六)
- python数据分析---实用数据挖掘(二)
- python数据分析---实用数据挖掘(三)
- python数据分析---实用数据挖掘(一)
- python数据分析---实用数据挖掘(四)
- Python数据分析与挖掘实战学习笔记(二)
- python数据分析实用小抄
- python数据挖掘学习笔记】十三.WordCloud词云配置过程及词频分析
- python数据分析与挖掘学习笔记(2)-淘宝商品数据清洗及预处理
- Python数据分析与挖掘实战代码纠错 代码3-3
- Python 和 R 数据分析/挖掘工具互查
- python数据分析与挖掘学习笔记(5)-公司客户价值判断分析与聚类算法
- Python数据分析实战 | 数据挖掘人门
- python数据分析与挖掘学习笔记(6)-电商网站数据分析及商品自动推荐实战与关联规则算法
- 『Python数据分析与挖掘实战』第五章:挖掘建模
- 【python数据挖掘课程】十八.线性回归及多项式回归分析四个案例分享
- 如何用Python进行大数据挖掘和分析
- 【Python数据挖掘课程】九.回归模型LinearRegression简单分析氧化物数据
- 利用python数据分析与挖掘相关资料总结