本文将根据村美小站数据拟合,从几个方面进行详细阐述,包括数据预处理、数据拟合、模型评估和预测结果可视化。
一、数据预处理
数据预处理是机器学习的重要环节,处理好的数据有助于提高模型的准确性。首先需要对数据进行读取和清洗,具体步骤如下:
import pandas as pd from sklearn.preprocessing import MinMaxScaler # 读取数据 data = pd.read_csv("data.csv") # 删除不需要的列 data.drop(["id", "date", "zipcode"], axis=1, inplace=True) # 数据归一化 scaler = MinMaxScaler() scaled_data = scaler.fit_transform(data)
上述代码读取了csv文件,并删除了id、date、zipcode等无用列。然后,使用MinMaxScaler进行数据归一化,将数据缩放到0-1之间,利于模型训练和预测。
二、数据拟合
在对数据进行预处理后,接下来是数据拟合的阶段,可以利用线性回归模型进行拟合。具体步骤如下:
from sklearn.linear_model import LinearRegression from sklearn.model_selection import train_test_split # 获取训练数据 X = scaled_data[:, :-1] y = scaled_data[:, -1] # 划分数据集 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)
上述代码利用train_test_split将数据集划分为训练集和测试集,其中test_size表示测试集占比,random_state表示随机数种子,保证评估结果的稳定性。然后,使用LinearRegression拟合模型,得到回归系数,用于预测房价。
三、模型评估
对模型进行评估能够了解模型的准确性和可靠性。评估指标主要包括均方误差、平均绝对误差、决定系数等。代码如下:
from sklearn.metrics import mean_squared_error, mean_absolute_error, r2_score # 在训练集上进行预测 train_pred = model.predict(X_train) # 在测试集上进行预测 test_pred = model.predict(X_test) # 评估指标 train_mse = mean_squared_error(y_train, train_pred) test_mse = mean_squared_error(y_test, test_pred) train_mae = mean_absolute_error(y_train, train_pred) test_mae = mean_absolute_error(y_test, test_pred) train_r2 = r2_score(y_train, train_pred) test_r2 = r2_score(y_test, test_pred) print("Train MSE: {:0.2f}, Test MSE: {:0.2f}".format(train_mse, test_mse)) print("Train MAE: {:0.2f}, Test MAE: {:0.2f}".format(train_mae, test_mae)) print("Train R2: {:0.2f}, Test R2: {:0.2f}".format(train_r2, test_r2))
上述代码利用mean_squared_error、mean_absolute_error、r2_score等评估指标,对模型在训练集和测试集上进行评估,得到模型的预测性能和拟合准确性。
四、预测结果可视化
将预测结果可视化可以更直观地观察模型的预测效果。具体代码如下:
import matplotlib.pyplot as plt # 对比预测值和真实值 fig, ax = plt.subplots(figsize=(8,5)) ax.scatter(y_test, test_pred, color="blue") ax.plot([y_test.min(), y_test.max()], [y_test.min(), y_test.max()], 'k--', lw=3) ax.set_xlabel("True House Price") ax.set_ylabel("Predicted House Price") ax.set_title("Predicted vs. True House Price") plt.show()
上述代码利用matplotlib绘制了预测值和真实值的散点图,Y轴表示预测值,X轴表示真实值,每个点表示一个样本,黑色实线表示完美拟合的线条。通过观察图像,可以对模型的效果和准确性有一个直观的评估。
原创文章,作者:EYRIL,如若转载,请注明出处:https://www.506064.com/n/373517.html