【发布时间】:2023-03-30 19:45:01
【问题描述】:
大家好,我在 kaggle(https://www.kaggle.com/sohier/calcofi,bottle.csv)的数据集上练习线性回归,我尝试通过以下方式实现它:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline
df = pd.read_csv("bottle.csv")
df
df1 = df.loc[:,"T_degC":"Salnty"]
df1 = df1.dropna()
from sklearn.cross_validation import train_test_split
from sklearn.linear_model import LinearRegression
X = df1["T_degC"]
y = df1["Salnty"]
X = X.values
type(X)
y = y.values
type(y)
X_train, X_test, y_train, y_test = train_test_split(X,y, test_size = 0.4)
lm = LinearRegression()
X_train = X_train.reshape(-1,1)
X_test = X_test.reshape(-1,1)
y_train = y_train.reshape(-1,1)
lm.fit(X_train, y_train)
当我查看截距和系数时出现问题,它们是:
lm.intercept_
lm.coef_
结果分别为 34.4 和 -0.05。但是再考虑 X 和 y 变量的散点图:
plt.scatter(X_train, y_train)
看起来负斜率的线绝对不是这个分布的回归线。因此,我想知道我可能做错了什么导致了这个结果。
【问题讨论】:
标签: python scikit-learn linear-regression