#导入库
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
wangxishi
2020-09-10
出现这个错误是因为传入的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)
wangxishi
2020-09-10
出现这个错误是因为传入的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)
wangxishi
2020-09-10
变换x和y以后,代码这么写,斜率出来都显示是异常情况,是什么原因呢
for i in range(rows):
reg=linear_model.LinearRegression()
id=data2["credit_no"][i]
x=[1,2,3,4,5,6]
y=data2.loc[i,"近6个月里程数":"近1个月里程数"].values.reshape(6,1)
try:
reg.fit(x,y)
coef=reg.coef_[0]
except:
coef="异常情况"
data2.loc[i,"斜率"]=coef
wangxishi
2020-09-10
以为我也想用一元线性方程,所以一元线性方程对应的x,y的参数,x是自变量,y是因变量,那么其实x应该是日期吧
wangxishi
2020-09-10
按照我的理解如果你想研究这个指标的变化趋势,横轴应该是时间,纵轴应该是指标值,那么x应该是时间,y是具体的指标值。你看下是否应该这样。
wangxishi
2020-09-10
还有个问题,我这个代码里面,近6的数代表前6个月的数据,对应的y为“1”,那么如果我的斜率是正数,就说明我的近6到近1的数据是上升趋势对吧
wangxishi
2020-09-10
我找到原因了,问题出在我的缩进有问题,data2.loc[i,"斜率"]=coef这行代码的缩进不正确导致的,现在可以了,感谢!
wangxishi
2020-09-10
我这样跑出来为什么斜率都是空的呢,只有一个有值
for i in range(rows):
reg=linear_model.LinearRegression()
id=data2["credit_no"][i]
x=data2.loc[i,"近6个月里程数":"近1个月里程数"].values.reshape(6,1)
y=[1,2,3,4,5,6]
try:
reg.fit(x,y)
coef=reg.coef_[0]
except:
coef="异常情况"
data2.loc[i,"斜率"]=coef

wangxishi
2020-09-10