首页 > 编程知识 正文

随机森林算法实际应用,heine borel 有限覆盖定理

时间:2023-05-06 20:16:24 阅读:24339 作者:804

泰坦尼克事件——随机森林算法实现前文实现步骤1 .库部署2 .数据集加载3 .具体步骤4 .数据清洗5 .特征构建6 .构建新字段,scikit-learn的标签编码

前言泰坦尼克号问题的背景

那个熟悉的《杰克安德鲁斯》的故事。 豪华游艇倒了,大家都惊慌失措地逃生,但救生艇数量有限,谁都拿不到。 副船长说:“lady and kid first! ’因此,能否得救其实并不是随机的,而是rank基于几个背景前后移动。 训练和测试数据是部分乘客的个人信息和生存状况,试图在此基础上生成合适的模型,预测其他人的生存状况。 逻辑回归处理实现步骤1 .库# 所需的库% matplotlibinlineimportsysimportpandasaspdimportnumpyasnpimportsklearnimportrandomimportttimeimportmatplotlibasmplimportimportiorid importseabornassnsfromsklearnimportensemble #随机林froms klearn.preprocessingimportlabelencoder # fromsklearnimportfeature _ selectionfromsklearnimportmodel _ selectionfromsklearnimportmetrics2.加载数据集data _ raw=PD

data_val.head (

DATA_raw.info(#表详细信息

#列名转换为小写,data _ raw.columns=data _ raw.columns.str.lower (data _ val.columns=data _ val.columns.ster )

#绘制图形的SNS.count plot (data _ raw [ ' survived ' ] )。

#合并两个数据集并进行数据清洗的data_all=[data_raw,data_val] 4.数据清洗data_raw.isnull(.sum ) #各特征为空值

DATA_val.isnull(.sum ) )。

#描述原始数据的data_raw.describe(include='all ' ) ) ) ) ) ) ) )。

#清洗原始数据for dataset in data_all: #补充默认值dataset [ ' age ' ].fill na (dataset [ ' age ' ].median ),in place=. fillna ) dataset['fare'].median ),in place=true (dataset [ ' embarked ' ].fill na ) dataset['embarked'].mode data_raw.drop(drop_columns,axis=1,inplace=True ) #axis表示按列操作,inplace表示按原始数据集操作

5 .进行特征构建的for dataset in data_all: #构建新字段: #1) family_size家庭规模sibspparchdataset [ ' family _ size ' ]=damily 1 :单身dataset [ ' single ' ]=1dataset [ ' single ' ].loc [ dataset [ ' family _ size ' ]1]=0#3)身份title daset [ ]

mbda x : x.split('.')[0]) #4) 票价 fare_sldbbt dataset['fare_sldbbt'] = pd.qcut(dataset['fare'],4) #根据票价分为4组,每组元素个数一致 #5) 年龄 dataset['age_sldbbt'] = pd.cut(dataset['age'].astype(int),5)#根据年龄分为5组,每组元素个数不一致dataset.head()

#根据title统计人数data_raw['title'].value_counts()

#人数少于十人的归为一类:otherstitle_names = (data_raw['title'].value_counts() < 10)data_raw['title'] = data_raw['title'].apply(lambda x : 'others' if title_names[x] else x)data_raw['title'].value_counts()

#按获救的人进行分组data_raw['survived'].groupby(data_raw['title']).mean()

6.构建新的字段,基于scikit-learn中的LabelEncoder() data_raw.head()

label = LabelEncoder()for dataset in data_all: #构建新字段 #1) sex_code dataset['sex_code'] = label.fit_transform(dataset['sex']) #2) embarked_code dataset['embarked_code'] = label.fit_transform(dataset['embarked']) #3) title_code dataset['title_code'] = label.fit_transform(dataset['title']) #4) fare_sldbbt_code dataset['fare_sldbbt_code'] = label.fit_transform(dataset['fare_sldbbt']) #5) age_sldbbt_code dataset['age_sldbbt_code'] = label.fit_transform(dataset['age_sldbbt'])

7.特征选择(根据实际情况进行选择,选择不唯一) target = ['survived']data_columns_three = ['sex_code', 'pclass', 'embarked_code', 'title_code', 'family_size', 'age_sldbbt_code', 'fare_sldbbt_code']columns_three = target + data_columns_three #通过Pandas中的get_dummies() 进行编码data_one_dummy = pd.get_dummies(data_raw[data_columns_one])data_one_dummy_list = data_one_dummy.columns.tolist()data_one_dummy_list

8.获取训练集和测试集 X_train_three,X_test_three,y_train_three,y_test_three = model_selection.train_test_split(data_raw[data_columns_three],data_raw[target],random_state = 0) X_train_one.shape

X_test_one.shape

9.随机森林算法的实现 from sklearn.model_selection import GridSearchCVfrom sklearn.ensemble import RandomForestClassifierrf = RandomForestClassifier(max_features='auto',#自动选择特征 random_state=1, n_jobs=-1)param_gird = {#会挑选出最好的参数 'criterion' : ['gini', 'entropy'], 'min_samples_leaf' : [1, 5, 10], 'min_samples_split' : [2, 4, 10, 12, 16], 'n_estimators' : [50, 100, 400, 700, 1000]}gs = GridSearchCV(estimator=rf, param_grid=param_gird, scoring= 'accuracy', cv=3, n_jobs=-1) 10.对特征进行训练 gs = gs.fit(X_train_three,y_train_three) #创建一个对象rf2 = RandomForestClassifier(criterion='entropy', min_samples_leaf=5, min_samples_split=12, n_estimators=50, random_state=1, n_jobs=-1)rf2.fit(X_train_three,y_train_three) # 根据特征的重要性排序pd.concat((pd.DataFrame(X_train_three.iloc[:, 1:].columns, columns=['Variable']), pd.DataFrame(rf2.feature_importances_, columns=['importance'])), axis=1).sort_values(by='importance', ascending=False)

11.在test上进行预测 pred = rf2.predict(X_test_three)pred_df = pd.DataFrame(pred,columns=['survived'])pred_df.head()

12.在test.csv上进行预测 data_val_dummy = pd.get_dummies(data_val[data_columns_three])data_val_dummy_list = data_val_dummy.columns.tolist()data_val_dummy_list

pred_val = rf2.predict(data_val_dummy[[ 'pclass', 'age', 'fare', 'family_size', 'single', 'sex_female', 'sex_male', 'embarked_C', 'embarked_Q', 'embarked_S', 'title_Col', 'title_Dona', 'title_Dr', 'title_Master', 'title_Miss', 'title_Mr', 'title_Mrs',]]) pred_val_df = pd.DataFrame(pred_val, columns=['survived'])pred_val_df

总结

如果对相关函数使用不是特别了解,或者对代码有疑问,可以私信我,不足之处请多多指导。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。