出现这个错误是因为传入的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
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
plt.rcParams['font.family'] = ['sans-serif']
plt.rcParams['font.sans-serif'] = ['SimHei']
# 读取数据
data_1 = pd.read_excel("直线.xlsx",index_col = "序号")
data_1
#创建一个拟合直线的函数
def linear_regression(x, y):
N = len(x)
sumx = sum(x)
sumy = sum(y)
sumx2 = sum(x ** 2)
sumxy = sum(x * y)
A = np.mat([[N, sumx], [sumx, sumx2]])
b = np.array([sumy, sumxy])
return np.linalg.solve(A, b)
slope = []
for i in range(288):
slope.append(list(linear_regression(data_1.iloc[i],b))[0])
slope
wangxishi
2020-09-09