线性回归函数python 线性回归函数数据15组

如何用python作空间自回归模型基本形式
线性模型(linear model)就是试图通过属性的线性组合来进行预测的函数 , 基本形式如下线性回归函数python:
f(x)=wTx b
许多非线性模型可在线性模型的基础上通过引入层结构或者高维映射(比如核方法)来解决 。线性模型有很好的解释性 。
线性回归
线性回归要求均方误差最小:
(w?,b?)=argmin∑i=1m(f(xi)?yi)2
均方误差有很好的几何意义,它对应线性回归函数python了常用的欧式距离(Euclidean distance) 。基于均方误差最小化来进行模型求解称为最小二乘法(least square method),线性回归中,最小二乘发就是试图找到一条直线,使得所有样本到直线的欧式距离之和最小 。
线性回归函数python我们把上式写成矩阵的形式:
w?=argmin(y?Xw)T(y?Xw)
这里我们把b融合到w中,X中最后再加一列1 。为了求最小值,我们对w求导并令其为0:
2XT(Xw?y)=0
当XTX为满秩矩阵(full-rank matrix)时是可逆的 。此时:
w=(XTX)?1XTy
令xi=(xi,1),可以得到线性回归模型:
f(xi)=xTi(XTX)?1XTy
python多元线性回归怎么计算1、什么是多元线性回归模型线性回归函数python?
当y值的影响因素不唯一时,采用多元线性回归模型 。
y =y=β0 β1x1 β2x2 ... βnxn
例如商品的销售额可能不电视广告投入,收音机广告投入,报纸广告投入有关系,可以有 sales =β0 β1*TV β2* radio β3*newspaper.
2、使用pandas来读取数据
pandas 是一个用于数据探索、数据分析和数据处理的python库
[python] view plain copy
import pandas as pd
[html] view plain copy
pre name="code" class="python"# read csv file directly from a URL and save the results
data = https://www.04ip.com/post/pd.read_csv('/home/lulei/Advertising.csv')
# display the first 5 rows
data.head()
上面代码的运行结果:
TVRadioNewspaperSales
0230.137.869.222.1
144.539.345.110.4
217.245.969.39.3
3151.541.358.518.5
4180.810.858.412.9
上面显示的结果类似一个电子表格 , 这个结构称为Pandas的数据帧(data frame),类型全称:pandas.core.frame.DataFrame.
pandas的两个主要数据结构:Series和DataFrame:
Series类似于一维数组 , 它有一组数据以及一组与之相关的数据标签(即索引)组成 。
DataFrame是一个表格型的数据结构,它含有一组有序的列,每列可以是不同的值类型 。DataFrame既有行索引也有列索引,它可以被看做由Series组成的字典 。
[python] view plain copy
# display the last 5 rows
data.tail()
只显示结果的末尾5行
TVRadioNewspaperSales
19538.23.713.87.6
19694.24.98.19.7
197177.09.36.412.8
198283.642.066.225.5
199232.18.68.713.4
[html] view plain copy
# check the shape of the DataFrame(rows, colums)
data.shape
查看DataFrame的形状,注意第一列的叫索引,和数据库某个表中的第一列类似 。
(200,4)
3、分析数据
特征:
TV:对于一个给定市场中单一产品,用于电视上的广告费用(以千为单位)
Radio:在广播媒体上投资的广告费用
Newspaper:用于报纸媒体的广告费用
响应:
Sales:对应产品的销量
在这个案例中,线性回归函数python我们通过不同的广告投入,预测产品销量 。因为响应变量是一个连续的值,所以这个问题是一个回归问题 。数据集一共有200个观测值,每一组观测对应一个市场的情况 。
注意:这里推荐使用的是seaborn包 。网上说这个包的数据可视化效果比较好看 。其实seaborn也应该属于matplotlib的内部包 。只是需要再次的单独安装 。
[python] view plain copy
import seaborn as sns
import matplotlib.pyplot as plt
# visualize the relationship between the features and the response using scatterplots
sns.pairplot(data, x_vars=['TV','Radio','Newspaper'], y_vars='Sales', size=7, aspect=0.8)
plt.show()#注意必须加上这一句,否则无法显示 。
[html] view plain copy
这里选择TV、Radio、Newspaper 作为特征,Sales作为观测值
[html] view plain copy
返回的结果:
seaborn的pairplot函数绘制X的每一维度和对应Y的散点图 。通过设置size和aspect参数来调节显示的大小和比例 。可以从图中看出,TV特征和销量是有比较强的线性关系的,而Radio和Sales线性关系弱一些,Newspaper和Sales线性关系更弱 。通过加入一个参数kind='reg',seaborn可以添加一条最佳拟合直线和95%的置信带 。
[python] view plain copy
sns.pairplot(data, x_vars=['TV','Radio','Newspaper'], y_vars='Sales', size=7, aspect=0.8, kind='reg')
plt.show()
结果显示如下:
4、线性回归模型
优点:快速;没有调节参数;可轻易解释;可理解 。
缺点:相比其他复杂一些的模型,其预测准确率不是太高,因为它假设特征和响应之间存在确定的线性关系,这种假设对于非线性的关系,线性回归模型显然不能很好的对这种数据建模 。
线性模型表达式: y=β0 β1x1 β2x2 ... βnxn 其中
y是响应
β0是截距
β1是x1的系数,以此类推
在这个案例中: y=β0 β1?TV β2?Radio ... βn?Newspaper
(1)、使用pandas来构建X(特征向量)和y(标签列)
scikit-learn要求X是一个特征矩阵,y是一个NumPy向量 。
pandas构建在NumPy之上 。
因此,X可以是pandas的DataFrame,y可以是pandas的Series,scikit-learn可以理解这种结构 。
[python] view plain copy
#create a python list of feature names
feature_cols = ['TV', 'Radio', 'Newspaper']
# use the list to select a subset of the original DataFrame
X = data[feature_cols]
# equivalent command to do this in one line
X = data[['TV', 'Radio', 'Newspaper']]
# print the first 5 rows
print X.head()
# check the type and shape of X
print type(X)
print X.shape
输出结果如下:
TVRadioNewspaper
0230.137.869.2
144.539.345.1
217.245.969.3
3151.541.358.5
4180.810.858.4
class 'pandas.core.frame.DataFrame'
(200, 3)
[python] view plain copy
# select a Series from the DataFrame
y = data['Sales']
# equivalent command that works if there are no spaces in the column name
y = data.Sales
# print the first 5 values
print y.head()
输出的结果如下:
022.1
110.4
29.3
318.5
412.9
Name: Sales
(2)、构建训练集与测试集
[html] view plain copy
pre name="code" class="python"span style="font-size:14px;"##构造训练集和测试集
from sklearn.cross_validation import train_test_split#这里是引用了交叉验证
X_train,X_test, y_train, y_test = train_test_split(X, y, random_state=1)
#default split is 75% for training and 25% for testing
[html] view plain copy
print X_train.shape
print y_train.shape
print X_test.shape
print y_test.shape
输出结果如下:
(150, 3)
(150,)
(50, 3)
(50,)
注:上面的结果是由train_test_spilit()得到的,但是我不知道为什么我的版本的sklearn包中居然报错:
ImportErrorTraceback (most recent call last)ipython-input-182-3eee51fcba5a in module()1 ###构造训练集和测试集---- 2 from sklearn.cross_validation import train_test_split3 #import sklearn.cross_validation4 X_train,X_test, y_train, y_test = train_test_split(X, y, random_state=1)5 # default split is 75% for training and 25% for testingImportError: cannot import name train_test_split
处理方法:1、我后来重新安装sklearn包 。再一次调用时就没有错误了 。
2、自己写函数来认为的随机构造训练集和测试集 。(这个代码我会在最后附上 。)
(3)sklearn的线性回归
[html] view plain copy
from sklearn.linear_model import LinearRegression
linreg = LinearRegression()
model=linreg.fit(X_train, y_train)
print model
print linreg.intercept_
print linreg.coef_
输出的结果如下:
LinearRegression(copy_X=True, fit_intercept=True, normalize=False)
2.66816623043
[ 0.046410010.19272538 -0.00349015]
[html] view plain copy
# pair the feature names with the coefficients
zip(feature_cols, linreg.coef_)
输出如下:
[('TV', 0.046410010869663267),
('Radio', 0.19272538367491721),
('Newspaper', -0.0034901506098328305)]
y=2.668 0.0464?TV 0.192?Radio-0.00349?Newspaper
如何解释各个特征对应的系数的意义?
对于给定了Radio和Newspaper的广告投入,如果在TV广告上每多投入1个单位,对应销量将增加0.0466个单位 。就是加入其它两个媒体投入固定 , 在TV广告上每增加1000美元(因为单位是1000美元) , 销量将增加46.6(因为单位是1000) 。但是大家注意这里的newspaper的系数居然是负数,所以我们可以考虑不使用newspaper这个特征 。这是后话 , 后面会提到的 。
(4)、预测
[python] view plain copy
y_pred = linreg.predict(X_test)
print y_pred
[python] view plain copy
print type(y_pred)
输出结果如下:
[ 14.586783737.9239799916.949799319.357910387.36360284
7.3535926916.083423259.1653304620.3550737412.63160058
22.833564729.662914614.1805560313.7036858411.4533557
4.1694056510.3127141323.0678686817.8046456514.53070132
15.1965668414.229696097.5469116713.4721032415.00625898
19.2853244420.731987819.7040883318.216408538.50112687
9.84937819.514257639.7327004318.1378201515.41731544
5.0741678712.2057525114.0550749310.66999267.16006245
11.8072883624.7974812110.4080916824.0522840418.44737314
20.805726319.4542480517.004817085.786341055.10594849]
type 'numpy.ndarray'
5、回归问题的评价测度
(1) 评价测度
对于分类问题,评价测度是准确率 , 但这种方法不适用于回归问题 。我们使用针对连续数值的评价测度(evaluation metrics) 。
这里介绍3种常用的针对线性回归的测度 。
1)平均绝对误差(Mean Absolute Error, MAE)
(2)均方误差(Mean Squared Error, MSE)
(3)均方根误差(Root Mean Squared Error, RMSE)
这里我使用RMES 。
[python] view plain copy
pre name="code" class="python"#计算Sales预测的RMSE
print type(y_pred),type(y_test)
print len(y_pred),len(y_test)
print y_pred.shape,y_test.shape
from sklearn import metrics
import numpy as np
sum_mean=0
for i in range(len(y_pred)):
sum_mean =(y_pred[i]-y_test.values[i])**2
sum_erro=np.sqrt(sum_mean/50)
# calculate RMSE by hand
print "RMSE by hand:",sum_erro
最后的结果如下:
type 'numpy.ndarray' class 'pandas.core.series.Series'
50 50
(50,) (50,)
RMSE by hand: 1.42998147691
(2)做ROC曲线
[python] view plain copy
import matplotlib.pyplot as plt
plt.figure()
plt.plot(range(len(y_pred)),y_pred,'b',label="predict")
plt.plot(range(len(y_pred)),y_test,'r',label="test")
plt.legend(loc="upper right") #显示图中的标签
plt.xlabel("the number of sales")
plt.ylabel('value of sales')
plt.show()
显示结果如下:(红色的线是真实的值曲线 , 蓝色的是预测值曲线)
直到这里整个的一次多元线性回归的预测就结束了 。
6、改进特征的选择
在之前展示的数据中,我们看到Newspaper和销量之间的线性关系竟是负关系(不用惊讶,这是随机特征抽样的结果 。换一批抽样的数据就可能为正了),现在我们移除这个特征,看看线性回归预测的结果的RMSE如何?
依然使用我上面的代码,但只需修改下面代码中的一句即可:
[python] view plain copy
#create a python list of feature names
feature_cols = ['TV', 'Radio', 'Newspaper']
# use the list to select a subset of the original DataFrame
X = data[feature_cols]
# equivalent command to do this in one line
#X = data[['TV', 'Radio', 'Newspaper']]#只需修改这里即可pre name="code" class="python" style="font-size: 15px; line-height: 35px;"X = data[['TV', 'Radio']]#去掉newspaper其他的代码不变
# print the first 5 rowsprint X.head()# check the type and shape of Xprint type(X)print X.shape
最后的到的系数与测度如下:
LinearRegression(copy_X=True, fit_intercept=True, normalize=False)
2.81843904823
[ 0.045887710.18721008]
RMSE by hand: 1.28208957507
然后再次使用ROC曲线来观测曲线的整体情况 。我们在将Newspaper这个特征移除之后,得到RMSE变小了,说明Newspaper特征可能不适合作为预测销量的特征,于是 , 我们得到了新的模型 。我们还可以通过不同的特征组合得到新的模型,看看最终的误差是如何的 。
备注:
之前我提到了这种错误:
注:上面的结果是由train_test_spilit()得到的,但是我不知道为什么我的版本的sklearn包中居然报错:
ImportErrorTraceback (most recent call last)ipython-input-182-3eee51fcba5a in module()1 ###构造训练集和测试集---- 2 from sklearn.cross_validation import train_test_split3 #import sklearn.cross_validation4 X_train,X_test, y_train, y_test = train_test_split(X, y, random_state=1)5 # default split is 75% for training and 25% for testingImportError: cannot import name train_test_split
处理方法:1、我后来重新安装sklearn包 。再一次调用时就没有错误了 。
2、自己写函数来认为的随机构造训练集和测试集 。(这个代码我会在最后附上 。)
这里我给出我自己写的函数:
如何用Python进行线性回归以及误差分析线性回归线性回归函数python:
设x,y分别为一组数据线性回归函数python,代码如下
import matplotlib.pyplot as plt
import numpy as np
ro=np.polyfit(x,y,deg=1)#deg为拟合线性回归函数python的多项式的次数(线性回归就选1)
ry=np.polyval(ro,x)#忘记x和ro哪个在前哪个在后线性回归函数python了 。。。
print ro#输出的第一个数是斜率k线性回归函数python,第二个数是纵截距b
plt.scatter(x,y)
plt.plot(x,ry)
python 的LinearRegression包 , 怎么导出回归模型公式?线性回归是机器学习算法中最简单线性回归函数python的算法之一线性回归函数python , 它是监督学习的一种算法线性回归函数python , 主要思想是在给定训练集上学习得到一个线性函数,在损失函数的约束下,求解相关系数,最终在测试集上测试模型的回归效果 。
也就是说 LinearRegression 模型会构造一个线性回归公式
y' = w^T xb
,其中 w 和 x 均为向量,w 就是系数,截距是 b,得分是根据真实的 y 值和预测值 y' 计算得到的 。
如何用python实现含有虚拟自变量的回归利用python进行线性回归
理解什么是线性回归
线性回归也被称为最小二乘法回归(Linear Regression, also called Ordinary Least-Squares (OLS) Regression) 。它的数学模型是这样的:
y = ab* x+e
其中,a 被称为常数项或截距;b 被称为模型的回归系数或斜率;e 为误差项 。a 和 b 是模型的参数 。
当然,模型的参数只能从样本数据中估计出来:
y'= a'b'* x
我们的目标是选择合适的参数,让这一线性模型最好地拟合观测值 。拟合程度越高,模型越好 。
那么,接下来的问题就是 , 我们如何判断拟合的质量呢?
这一线性模型可以用二维平面上的一条直线来表示 , 被称为回归线 。
模型的拟合程度越高 , 也即意味着样本点围绕回归线越紧密 。
如何计算样本点与回归线之间的紧密程度呢?
高斯和勒让德找到的方法是:被选择的参数,应该使算出来的回归线与观测值之差的平房和最小 。用函数表示为:
这被称为最小二乘法 。最小二乘法的原理是这样的:当预测值和实际值距离的平方和最小时 , 就选定模型中的两个参数(a 和 b) 。这一模型并不一定反映解释变量和反应变量真实的关系 。但它的计算成本低;相比复杂模型更容易解释 。
模型估计出来后 , 我们要回答的问题是:
我们的模型拟合程度如何?或者说,这个模型对因变量的解释力如何?(R2)
整个模型是否能显著预测因变量的变化?(F 检验)
每个自变量是否能显著预测因变量的变化?(t 检验)
首先回答第一个问题 。为了评估模型的拟合程度如何,我们必须有一个可以比较的基线模型 。
如果让你预测一个人的体重是多少?在没有任何额外信息的情况下,你可能会用平均值来预测,尽管会存在一定误差,但总比瞎猜好 。
现在,如果你知道他的身高信息,你的预测值肯定与平均值不一样 。额外信息相比平均值更能准确地预测被预测的变量的能力,就代表模型的解释力大小 。
上图中,SSA 代表由自变量 x 引起的 y 的离差平方和,即回归平方和 , 代表回归模型的解释力;SSE 代表由随机因素引起的 y 的离差平方和 , 即剩余平方和,代表回归模型未能解释的部分;SST 为总的离差平方和,即我们仅凭 y 的平均值去估计 y 时所产生的误差 。
用模型能够解释的变异除以总的变异就是模型的拟合程度:
R2=SSA/SST=1-SSE
R2(R 的平方)也被称为决定系数或判定系数 。
第二个问题 , 我们的模型是否显著预测了 y 的变化?
假设 y 与 x 的线性关系不明显,那么 SSA 相对 SSE 占有较大的比例的概率则越小 。换句话说,在 y 与 x 无线性关系的前提下 , SSA 相对 SSE 的占比越高的概率是越小的,这会呈现一定的概率分布 。统计学家告诉我们它满足 F 分布,就像这样:
如果 SSA 相对 SSE 占比较大的情况出现了,比如根据 F 分布,这个值出现的概率小于 5% 。那么,我们最好是拒绝 y 与 x 线性关系不显著的原始假设,认为二者存在显著的线性关系较为合适 。
第三个问题,每个自变量是否能显著预测因变量的变化?换句话说,回归系数是否显著?
回归系数的显著性检验是围绕回归系数的抽样分布(t 分布)来进行的,推断过程类似于整个模型的检验过程 , 不赘言 。
实际上,对于只有一个自变量的一元线性模型 , 模型的显著性检验和回归系数的检验是一致的,但对于多元线性模型来说,二者就不能等价了 。
利用 statsmodels 进行最小二乘回归
#导入相应模块
In [1]: import numpy as np
In [2]: import pandas as pd
In [3]: import statsmodels.api as sm
#将数据导入 pandas 的 dataframe 对象,第一列(年份)作为行标签
In [4]: df=pd.read_csv('/Users/xiangzhendong/Downloads/vincentarelbundock-Rdatasets-1218370/csv/datasets/longley.csv', index_col=0)
#查看头部数据
In [5]: df.head()
Out[5]:
GNP.deflatorGNPUnemployedArmed.ForcesPopulationYear\
194783.0234.289235.6159.0107.6081947
194888.5259.426232.5145.6108.6321948
194988.2258.054368.2161.6109.7731949
195089.5284.599335.1165.0110.9291950
195196.2328.975209.9309.9112.0751951
Employed
194760.323
194861.122
194960.171
195061.187
195163.221
#设置预测变量和结果变量,用 GNP 预测 Employed
In [6]: y=df.Employed #结果变量
In [7]: X=df.GNP #预测变量
#为模型增加常数项 , 即回归线在 y 轴上的截距
In [8]: X=sm.add_constant(X)
#执行最小二乘回归,X 可以是 numpy array 或 pandas dataframe(行数等于数据点个数 , 列数为预测变量个数),y 可以是一维数组(numpy array)或 pandas series
In [10]: est=sm.OLS(y,X)
使用 OLS 对象的 fit() 方法来进行模型拟合
In [11]: est=est.fit()
#查看模型拟合的结果
In [12]: est.summary()
Out[12]:
#查看最终模型的参数
In [13]: est.params
Out[13]:
const51.843590
GNP0.034752
dtype: float64
#选择 100 个从最小值到最大值平均分布(equally spaced)的数据点
In [14]: X_prime=np.linspace(X.GNP.min(), X.GNP.max(),100)[:,np.newaxis]
In [15]: X_prime=sm.add_constant(X_prime)
#计算预测值
【线性回归函数python 线性回归函数数据15组】In [16]: y_hat=est.predict(X_prime)
In [17]: plt.scatter(X.GNP, y, alpha=0.3) #画出原始数据
#分别给 x 轴和 y 轴命名
In [18]: plt.xlabel("Gross National Product")
In [19]: plt.ylabel("Total Employment")
In [20]: plt.plot(X_prime[:,1], y_hat, 'r', alpha=0.9) #添加回归线,红色
多元线性回归(预测变量不止一个)
我们用一条直线来描述一元线性模型中预测变量和结果变量的关系,而在多元回归中,我们将用一个多维(p)空间来拟合多个预测变量 。下面表现了两个预测变量的三维图形:商品的销量以及在电视和广播两种不同媒介的广告预算 。
数学模型是:
Sales = beta_0beta_1*TVbeta_2*Radio
图中,白色的数据点是平面上的点 , 黑色的数据点事平面下的点 。平面的颜色是由对应的商品销量的高低决定的,高是红色,低是蓝色 。
利用 statsmodels 进行多元线性回归
In [1]: import pandas as pd
In [2]: import numpy as np
In [3]: import statsmodels.api as sm
In [4]: df_adv=pd.read_csv('g.csv',index_col=0)
In [6]: X=df_adv[['TV','Radio']]
In [7]: y=df_adv['Sales']
In [8]: df_adv.head()
Out[8]:
TVRadioNewspaperSales
1230.137.869.222.1
244.539.345.110.4
317.245.969.39.3
4151.541.358.518.5
5180.810.858.412.9
In [9]: X=sm.add_constant(X)
In [10]: est=sm.OLS(y,X).fit()
In [11]: est.summary()
Out[11]:
你也可以使用 statsmodels 的 formula 模块来建立多元回归模型
In [12]: import statsmodels.formula.api as smf
In [13]: est=smf.ols(formula='Sales ~ TVRadio',data=https://www.04ip.com/post/df_adv).fit()
处理分类变量
性别或地域都属于分类变量 。
In [15]: df= pd.read_csv('httd.edu/~tibs/ElemStatLearn/datasets/SAheart.data', index_col=0)
In [16]: X=df.copy()
利用 dataframe 的 pop 方法将 chd 列单独提取出来
In [17]: y=X.pop('chd')
In [18]: df.head()
Out[18]:
sbptobaccoldladiposityfamhisttypeaobesityalcohol\
row.names
116012.005.7323.11Present4925.3097.20
21440.014.4128.61Absent5528.872.06
31180.083.4832.28Present5229.143.81
41707.506.4138.03Present5131.9924.26
513413.603.5027.78Present6025.9957.34
agechd
row.names
1521
2631
3460
4581
5491
In [19]: y.groupby(X.famhist).mean()
Out[19]:
famhist
Absent0.237037
Present0.500000
Name: chd, dtype: float64
In [20]: import statsmodels.formula.api as smf
In [21]: df['famhist_ord']=pd.Categorical(df.famhist).labels
In [22]: est=smf.ols(formula="chd ~ famhist_ord", data=https://www.04ip.com/post/df).fit()
分类变量的编码方式有许多,其中一种编码方式是虚拟变量编码(dummy-encoding),就是把一个 k 个水平的分类变量编码成 k-1 个二分变量 。在 statsmodels 中使用 C 函数实现 。
In [24]: est=smf.ols(formula="chd ~ C(famhist)", data=https://www.04ip.com/post/df).fit()
In [26]: est.summary()
Out[26]:
处理交互作用
随着教育年限(education)的增长,薪酬 (wage) 会增加吗?这种影响对男性和女性而言是一样的吗?
这里的问题就涉及性别与教育年限的交互作用 。
换言之,教育年限对薪酬的影响是男女有别的 。
#导入相关模块
In [1]: import pandas as pd
In [2]: import numpy as np
In [4]: import statsmodels.api as sm
#导入数据,存入 dataframe 对象
In [5]: df=pd.read_csv('/Users/xiangzhendong/Downloads/pydatafromweb/wages.csv')
In [6]: df[['Wage','Education','Sex']].tail()
Out[6]:
WageEducationSex
52911.36180
5306.10121
53123.25171
53219.88120
53315.38160
由于性别是一个二分变量,我们可以绘制两条回归线,一条是 sex=0(男性),一条是 sex=1(女性)
#绘制散点图
In [7]: plt.scatter(df.Education,df.Wage, alpha=0.3)
In [9]: plt.xlabel('education')
In [10]: plt.ylabel('wage')
#linspace 的作用是生成从最小到最大的均匀分布的 n 个数
In [17]: education_linspace=np.linspace(df.Education.min(), df.Education.max(),100)
In [12]: import statsmodels.formula.api as smf
In [13]: est=smf.ols(formula='Wage ~ EducationSex', data=https://www.04ip.com/post/df).fit()
In [18]: plt.plot(education_linspace, est.params[0] est.params[1]education_linspace est.params[2]0, 'r')
In [19]: plt.plot(education_linspace, est.params[0] est.params[1]education_linspace est.params[2]1, 'g')
以上两条线是平行的 。这是因为分类变量只影响回归线的截距 , 不影响斜率 。
接下来我们可以为回归模型增加交互项来探索交互效应 。也就是说,对于两个类别,回归线的斜率是不一样的 。
In [32]: plt.scatter(df.Education,df.Wage, alpha=0.3)
In [33]: plt.xlabel('education')
In [34]: plt.ylabel('wage')
#使用*代表我们的回归模型中除了交互效应,也包括两个变量的主效应;如果只想看交互效应,可以用:代替 , 但通常不会只看交互效应
In [35]: est=smf.ols(formula='Wage ~ Sex*Education', data=https://www.04ip.com/post/df).fit()
In [36]: plt.plot(education_linspace, est.params[0] est.params[1]0 est.params[2]education_linspace est.params[3]0education_linspace, 'r')
In [37]: plt.plot(education_linspace, est.params[0] est.params[1]1 est.params[2]education_linspace est.params[3]1education_linspace, 'g')
参考资料:
DataRobot | Ordinary Least Squares in Python
DataRoboe | Multiple Regression using Statsmodels
AnalyticsVidhya | 7 Types of Regression Techniques you should know!
python中predict函数在哪个库一般来说predict函数都是要import一些机器学习算法库后用于建模后预测用的 。比如说sklearn库里面的回归,分类,聚类等等都是有对应predict函数的 。
举个最简单的例子:
线性回归的函数可以在C:\Python27\Lib\site-packages\sklearn\linear_model文件夹中找到 。脚本名为base.py,predict()在187行就有 。
线性回归函数python的介绍就聊到这里吧 , 感谢你花时间阅读本站内容,更多关于线性回归函数数据15组、线性回归函数python的信息别忘了在本站进行查找喔 。

    推荐阅读