鲍鱼年龄的预测模型模型效果评估: 输出两个模型的均方误差和决定系数R2; 绘制残差图,python,sklearn语言
时间: 2024-03-12 07:48:55 浏览: 67
简单的预测模型资源实例
好的,以下是使用Python和Scikit-learn库实现鲍鱼年龄预测模型效果评估的示例代码:
```python
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
import matplotlib.pyplot as plt
# 读取数据集
df = pd.read_csv('abalone.csv')
# 特征选择
X = df.drop(['Rings', 'Sex'], axis=1)
y = df['Rings']
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
# 训练模型A
model_A = LinearRegression()
model_A.fit(X_train, y_train)
# 预测测试集结果
y_pred_A = model_A.predict(X_test)
# 计算模型A的MSE和R2值
mse_A = mean_squared_error(y_test, y_pred_A)
r2_A = r2_score(y_test, y_pred_A)
# 训练模型B
model_B = LinearRegression()
model_B.fit(X_train[['Length', 'Diameter', 'Height']], y_train)
# 预测测试集结果
y_pred_B = model_B.predict(X_test[['Length', 'Diameter', 'Height']])
# 计算模型B的MSE和R2值
mse_B = mean_squared_error(y_test, y_pred_B)
r2_B = r2_score(y_test, y_pred_B)
# 输出结果
print('模型A的MSE和R2值分别为:{:.4f} 和 {:.4f}'.format(mse_A, r2_A))
print('模型B的MSE和R2值分别为:{:.4f} 和 {:.4f}'.format(mse_B, r2_B))
# 绘制模型A的残差图
plt.scatter(y_pred_A, y_test - y_pred_A, alpha=0.5)
plt.title('Residual plot of Model A')
plt.xlabel('Predicted values')
plt.ylabel('Residuals')
plt.show()
# 绘制模型B的残差图
plt.scatter(y_pred_B, y_test - y_pred_B, alpha=0.5)
plt.title('Residual plot of Model B')
plt.xlabel('Predicted values')
plt.ylabel('Residuals')
plt.show()
```
请注意,上述代码中的数据集文件名和特征选择方式可能需要根据您的实际情况进行修改。
阅读全文