编辑代码

import pandas as pd  
from sklearn.model_selection import train_test_split  
from sklearn.linear_model import LinearRegression  
from sklearn.metrics import mean_squared_error, r2_score  
  
# 假设的波士顿房价数据集实例(简化和虚构)  
data = {  
    'CRIM': [0.00632, 0.02731, 0.02729, 0.03237],  # 城镇人均犯罪率  
    'ZN': [18.0, 0.0, 0.0, 0.0],                  # 住宅用地超过25,000平方英尺的比例  
    'INDUS': [2.31, 7.07, 7.07, 2.18],            # 城镇非零售商业用地比例  
    'CHAS': [0, 0, 0, 1],                         # 查尔斯河虚拟变量  
    'NOX': [0.538, 0.469, 0.469, 0.458],          # 一氧化氮浓度  
    'MEDV': [24.0, 21.6, 34.7, 33.4]              # 房价中位数(目标变量)  
}  
  
# 将数据转换为DataFrame  
df = pd.DataFrame(data)  
  
# 分离特征和目标变量  
X = df[['CRIM', 'ZN', 'INDUS', 'CHAS', 'NOX']]  
y = df['MEDV']  
  
# 划分数据集为训练集和测试集(在这个小数据集中,我们可能只使用训练集)  
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)  
  
# 创建线性回归模型实例  
model = LinearRegression()  
  
# 训练模型  
model.fit(X_train, y_train)  
  
# 预测测试集(或训练集,因为数据较少)上的结果  
y_pred = model.predict(X_train)  # 在这个例子中,我们使用训练集进行预测,因为数据量很小  
  
# 评估模型  
mse = mean_squared_error(y_train, y_pred)  
r2 = r2_score(y_train, y_pred)  
  
# 输出评估结果  
print(f"均方误差(MSE): {mse}")  
print(f"决定系数(R^2): {r2}")  
  
# 输出模型的截距和系数  
print(f"截距: {model.intercept_}")  
print(f"系数: {dict(zip(X.columns, model.coef_))}")