1. kaggle泰坦尼克数据titanic完整下载,原作者良心分享
https://download.csdn.net/download/lansui7312/9936840
2. 缺失值处理
# -*- coding:utf - import pandas as pd import numpy as np from sklearn.ensemble import RandomForestRegressor df = pd.read_csv('train.csv',header=0) # SibSp 堂兄弟/妹个数 # Parch 父母与小孩个数 # Cabin 客舱 # Embarked 登船港口 # df.head(20) # df.info() # print(df.describe()) # print(df.columns[1]) # 男性和女性幸存率查看 x=[df[(df.Sex=='male')]['Sex'].size,df[(df.Sex=='female')]['Sex'].size] # print(x) y=[df[(df.Sex=='male') & (df.Survived==1)]['Sex'].size, df[(df.Sex=='female') & (df.Survived==1)]['Sex'].size] # print(y[1]*100/x[1],y[0]*100/x[0]) # 缺失值处理 # 1. 删掉缺失行 # 2. 上船地点不重要,用众数赋值 df.Embarked[df.Embarked.isnull()] = df.Embarked.dropna().mode().values # print(df.Embarked) #3. 标称属性,赋予缺失值,因为缺失本身可能也是一种隐含信息。比如Cabin代表没有船舱 df.Cabin[df.Cabin.isnull()]='U0' # print(df.Cabin) #4. 使用回归、随机森林等模型来预测缺失属性的值 # 因为年龄是一个相当重要的特征,所以要保证一定的缺失值填充准确率 age_df=df[['Age','Survived','Fare','Parch','SibSp','Pclass']] age_df_notnull = age_df.loc[(df.Age.notnull())] age_df_isnull = age_df.loc[(df.Age.isnull())] X = age_df_notnull.values[:,1:] Y = age_df_notnull.values[:,0] # y1 = age_df_notnull.values[:,2:] # X[:,0]是numpy中数组的一种写法表示对一个二维数组,取该二维数组第一维中的所有数据,第二维中取第0个数据,直观来说,X[:,0]就是取所有行的第0个数据, X[:,1] 就是取所有行的第1个数据 # print(X) rfr = RandomForestRegressor(n_estimators=1000,n_jobs=-1) rfr.fit(X,Y) predictAges = rfr.predict(age_df_isnull.values[:,1:]) df.loc[(df.Age.isnull()),'Age'] = predictAges print(df.describe())
3.