如图,我有每个客户近6-近1的数据,想算出每个客户近6-近1数据的斜率,每个客户的斜率都要算出来,x 是近1到近6这6列的数据,y取1,2,3,4,5,6就可以,因为y代表月份,近1个月到近6个月的月份 代表y
测试文件已传








reg.coef_ 这个是编写sklearn库的人这样命名的,coef_是reg对象的一个属性,这个命名我们自己改不了。也许编写这个库的人哪天觉得coef_这个名字不好听就换掉。目前就只能这样用

#导入库
import pandas as pd
import numpy as np
#导入数据
data=pd.read_excel("C:\\Users\\Administrator\\Desktop\\1599639998_298148.xlsx")
from sklearn import linear_model
#将没有求得的斜率预设为缺失值
data["斜率"]=np.nan
#求数据行数
rows=data.shape[0]
#从第一行(第一个人)开始,进行循环,多少行数据就循环多少次,做多少个回归
for i in range(rows):
reg=linear_model.LinearRegression()
#调取第i行的x数据
id=data["序号"][i]
#要求y是一维数组
y=data.loc[i,"近6":"近1"].values
#要求x是二维数组,哪怕x只由一个变量
x=np.array([1,2,3,4,5,6]).reshape(6,1)
try:
reg.fit(x,y)
coef=reg.coef_[0]
except:
coef="异常情况"
data.loc[i,"斜率"]=coef

出现这个错误是因为传入的y要求是一维数组,x要求是二维数组,而你简单互换身份后,没有讲x设定为二维数组,y设定为一维数组。应该这样改:
#要求y是一维数组
y=data.loc[i,"近6":"近1"].values
#要求x是二维数组,哪怕x只由一个变量
x=np.array([1,2,3,4,5,6]).reshape(6,1)

出现这个错误是因为传入的y要求是一维数组,x要求是二维数组,而你简单互换身份后,没有讲x设定为二维数组,y设定为一维数组。应该这样改:
#要求y是一维数组
y=data.loc[i,"近6":"近1"].values
#要求x是二维数组,哪怕x只由一个变量
x=np.array([1,2,3,4,5,6]).reshape(6,1)