600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > 机器学习赛事(四):快来一起挖掘幸福感

机器学习赛事(四):快来一起挖掘幸福感

时间:2019-05-20 11:15:16

相关推荐

机器学习赛事(四):快来一起挖掘幸福感

机器学习赛事(四):快来一起挖掘幸福感

机器学习训练营:

/s/20d6735792ef867814c90698221d1499

比赛题目

   赛题使用公开数据的问卷调查结果,选取其中多组变量,包括个体变量(性别、年龄、地域、职业、健康、婚姻与政治面貌等等)、家庭变量(父母、配偶、子女、家庭资本等等)、社会态度(公平、信用、公共服务等等),来预测其对幸福感的评价。

   幸福感预测的准确性不是赛题的唯一目的,更希望选手对变量间的关系、变量群的意义有所探索与收获。

数据预处理

   导入数据之后,先对数据进行预处理,寻找缺失值,若缺失值个数超过总样本数的1/2,值剔除该数据特征。其余的缺失值将由均值填补。

def filter_extreme_3sigma(series,n=3): #3 sigma mean = series.mean()std = series.std()max_range = mean + n*stdmin_range = mean - n*stdreturn np.clip(series,min_range,max_range)

   然后用3 sigma 对数据进行异常值处理,对数据进行标准化处理。

scaler=StandardScaler(with_mean=True,with_std=True)data_train.iloc[:,:127]=scaler.fit_transform(data_train.iloc[:,:127])data_train

   用KNN算法对其进行分类,并结合标签计算预测的准确率

from sklearn.neighbors import KNeighborsClassifierfrom sklearn.model_selection import train_test_splitseed=5x_train,x_test,y_train,y_test=train_test_split(data_train,y,test_size=0.25,random_state=seed)clf=KNeighborsClassifier(20)clf.fit(x_train,y_train)X_pred = clf.predict(x_test)acc = sum(X_pred == y_test) / X_pred.shape[0]print("预测的准确率ACC: %.3f" % acc)

   预测的准确率不理想,该用随机森林进行分类预测。

from sklearn.ensemble import RandomForestClassifierrf=RandomForestClassifier(n_estimators=200,max_features=8,max_depth=20,oob_score=True,random_state=1)rf.fit(x_train,y_train)print('oob score:',round(rf.oob_score_,4)*100,'%')trainpre_y=rf.predict(x_test)acc = sum(trainpre_y == y_test) / trainpre_y.shape[0]print("预测的准确率ACC: %.3f" % acc)

   结果与随机森林的差不多。

   可能是对数据的清理上有缺陷,可以再去尝试别的方法,再加上对特征的筛选和对数据进行不平衡处理,得出的结果可能会更好一些。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。