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

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

机器学习训练营:
https://tianchi.aliyun.com/s/20d6735792ef867814c90698221d1499

比赛题目

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

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

数据预处理

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

def filter_extreme_3sigma(series,n=3): #3 sigma 
  mean = series.mean()
  std = series.std()
  max_range = mean + n*std
  min_range = mean - n*std
  return 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 KNeighborsClassifier
from sklearn.model_selection import train_test_split
seed=5
x_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 RandomForestClassifier
rf=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)

在这里插入图片描述
   结果与随机森林的差不多。

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

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值