-
导入所需的库:
numpy
用于数值计算。pandas
用于数据处理和分析。matplotlib.pyplot
和seaborn
用于数据可视化。train_test_split
用于将数据分为训练集和测试集。RandomForestRegressor
用于构建随机森林回归模型。mean_absolute_error
用于计算预测结果的均方绝对误差。
-
定义一个字典
planet_to_numeric
,(数值处理需要)将名称映射为数值。 -
使用
map
函数将train_data
和test_data
中的'HomePlanet'
列中的星球名称替换为相应的数值。 -
通过遍历
train_data
和test_data
的列,使用众数填充每个列中的缺失值。 -
从
train_data
中选择特征列featrues
,并将目标列y
('Transported'
)分离出来。 -
使用
train_test_split
将x
(特征)和y
(目标)分为训练集和测试集。 -
使用
RandomForestRegressor
构建随机森林回归模型,并在训练数据上训练它。 -
在测试数据上进行预测,并使用
mean_absolute_error
计算预测结果与实际值之间的误差。 -
根据预测结果,创建一个新的列
prediction1
,如果预测值大于或等于0.5,则为“True”,否则为“False”。 -
创建一个包含
PassengerId
和Transported
的DataFrame
,并将其保存为submission.csv
文件。
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestRegressor
from sklearn.metrics import mean_absolute_error
planet_to_numeric = {
'Europa': '1',
'Earth': '2',
'Mars':'3'
}
train_data['HomePlanet'] = train_data['HomePlanet'].map(planet_to_numeric)
test_data['HomePlanet'] = test_data['HomePlanet'].map(planet_to_numeric)
test_data
featrues=["CryoSleep","Age","VIP",'HomePlanet']
for column in train_data.columns:
mode_value = train_data[column].mode()[0]
train_data[column] = train_data[column].fillna(mode_value)
for column in test_data.columns:
mode_value = test_data[column].mode()[0]
test_data[column] = test_data[column].fillna(mode_value)
x=train_data[featrues]
y=train_data['Transported']
train_x,test_x,train_y,test_y=train_test_split(x,y)
sns.countplot(x="HomePlanet",hue="Transported", data=train_data)
model=RandomForestRegressor(n_estimators=500)
model.fit(train_x,train_y)
prediction=model.predict(test_x)
dif=mean_absolute_error(prediction,test_y)
test=test_data[featrues]
predictions=model.predict(test)
prediction1=[]
for i in predictions:
if i>=0.5:
prediction1.append("True")
else:
prediction1.append("False")
output=pd.DataFrame({"PassengerId":test_data['PassengerId'],'Transported':prediction1})
output.to_csv('submission.csv',index=False)
submssion1=pd.read_csv('/kaggle/working/submission.csv')
submssion1