写一段python代码,这里有test.csv和train.csv,创建一个机器学习模型,预测不同人造 钻石的价格,要求有多个可视化图形, 找出5个对预测人造钻石价格最重要属性。 2. 利用train.csv数据集构建预测模型,并评估预测模型的性能。 3. 对test.csv中的样本进行预测并上传至kaggle
时间: 2024-03-12 09:49:57 浏览: 140
好的,以下是代码实现:
```python
# 导入必要的库
import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error, r2_score
# 读取train.csv和test.csv
train_data = pd.read_csv('train.csv')
test_data = pd.read_csv('test.csv')
# 数据探索与可视化
# 1. 查看数据前5行
print(train_data.head())
# 2. 统计数据信息
print(train_data.info())
# 3. 查看各个数值特征的分布情况
train_data.hist(bins=50, figsize=(20, 15))
plt.show()
# 4. 查看特征之间的相关性
corr_matrix = train_data.corr()
sns.heatmap(corr_matrix, annot=True)
plt.show()
# 确定特征并进行数据预处理
# 1. 去除不相关的特征
train_data.drop(['id', 'carat', 'depth', 'table'], axis=1, inplace=True)
test_data.drop(['id', 'carat', 'depth', 'table'], axis=1, inplace=True)
# 2. 处理缺失值
train_data.fillna(train_data.mean(), inplace=True)
test_data.fillna(test_data.mean(), inplace=True)
# 3. 将分类变量转化为数值变量
train_data = pd.get_dummies(train_data, columns=['cut', 'color', 'clarity'])
test_data = pd.get_dummies(test_data, columns=['cut', 'color', 'clarity'])
# 拆分数据集并训练模型
# 1. 拆分数据集
X = train_data.drop('price', axis=1)
y = train_data['price']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 2. 训练模型
model = LinearRegression()
model.fit(X_train, y_train)
# 3. 评估模型
y_pred = model.predict(X_test)
mse = mean_squared_error(y_test, y_pred)
r2 = r2_score(y_test, y_pred)
print('均方误差(MSE):', mse)
print('决定系数(R2):', r2)
# 对测试集进行预测并上传至kaggle
# 1. 预测
test_pred = model.predict(test_data)
# 2. 生成提交文件
submission = pd.DataFrame({'id': test_data.index, 'price': test_pred})
submission.to_csv('submission.csv', index=False)
```
以上代码实现了以下步骤:
1. 读取train.csv和test.csv,并进行数据探索与可视化,包括查看数据前5行、统计数据信息、查看各个数值特征的分布情况和特征之间的相关性。
2. 确定特征并进行数据预处理,包括去除不相关的特征、处理缺失值和将分类变量转化为数值变量。
3. 拆分数据集并训练模型,包括拆分数据集、训练模型和评估模型。
4. 对测试集进行预测并上传至kaggle,包括预测和生成提交文件。
阅读全文