用隨機森林算法預測年齡

#學習日記:阿里雲天池,機器學習實戰進階:泰坦尼克號乘客獲救預測。有一些課程代碼運行報錯,自己修改了,親測能跑
#win10 Pycharm環境 ,需要用到的庫請提前在terminal終端用命令下載:pip install 庫名稱

import re
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import warnings

#讀取
train_data=pd.read_csv('titanic_train.csv')
test_data=pd.read_csv('titanic_test.csv')
#查看前五行
#train_data.head()
'''
#查看空值,數量等信息
train_data.info()
print("--"*8)
test_data.info()'''
#打印 生存 字段的值
#print(train_data['Survived'])
'''
#繪製餅圖
train_data['Survived'].value_counts().plot.pie(autopct="%1.2f%%",startangle=90,labeldistance=1.1,pctdistance=0.6)
plt.show()'''
'''
#上船  屬性的空值都填充衆數。船艙號 屬性的空值填充U0,表示無艙號
print(train_data.Embarked)
print(train_data.Embarked.dropna())
print(train_data.Embarked.dropna().mode())
print(train_data.Embarked.dropna().mode().values)'''
train_data["Embarked"]=train_data.Embarked.fillna(train_data.Embarked.dropna().mode().values[0])
train_data['Cabin'] = train_data.Cabin.fillna('U0')
#train_data.info()



from sklearn.ensemble import RandomForestRegressor

#Age年齡有空值,現在要預測年齡Age,其他五項作爲投喂的屬性。切割出六項屬性的數據。
age_df=train_data[["Age",'Survived','Fare', 'Parch', 'SibSp', 'Pclass']]
age_df_notnull = age_df[age_df.Age.notnull()]#選出非空的記錄
age_df_isnull = age_df[age_df.Age.isnull()]
'''
print(age_df,"\n")
print(age_df_notnull,"\n")
print(age_df_isnull,"\n")
'''
#根據X擬合出一個可以預測Y的模型
X=age_df_notnull.values[:,1:]
Y=age_df_notnull.values[:,0]

X1=age_df_isnull.values[:,1:]
#print(X,"\n",Y)
#用隨機森林算法
RFR=RandomForestRegressor(n_estimators=100)
RFR.fit(X, Y)#開始擬合
predictAges=RFR.predict(X1)#開始預測
train_data.loc[train_data.Age.isnull(),["Age"]]=predictAges#把結果存進
train_data.info()
print(train_data.Age)
發佈了83 篇原創文章 · 獲贊 7 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章