• 大小: 36KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-05-05
  • 语言: Python
  • 标签: 阿里云  机器学习  

资源简介

阿里云天池——快来一起挖掘幸福感吧 全部代码附注释+提交数据 编程环境:pycharm+python3.7 用到的包:numpy、pandas、matplotlib、sklearn、xgboost

资源截图

代码片段和文件信息

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties  # 字体管理器

font = FontProperties(fname=r“c:\windows\fonts\simsun.ttc“ size=15)  # 设置汉字格式

# 导入训练数据集和测试集
# encoding=‘gbk‘,不能用utf-8
train_data = pd.read_csv(‘happiness_train_complete.csv‘ encoding=‘gbk‘)
test_data = pd.read_csv(‘happiness_test_complete.csv‘ encoding=‘gbk‘)
# print(train_data)

#数据初步可视化1
x = train_data.id
y = train_data.happiness
plt.figure(figsize=(106))
plt.title(u“幸福感随id分布“fontproperties=font)
plt.scatter(x yc=‘#DC143C‘)
plt.xlabel(“id“fontsize=18)
plt.ylabel(u‘幸福感值‘fontsize=18fontproperties=font)
plt.show()
#数据初步可视化2
tmp=train_data.happiness
k=0
res={}
for indexk in enumerate(tmp):
    if k not in res:
        res[k]=1
    else:
        res[k]+=1
#print(res)
x=[];y=[]
for k in res:
    x.append(k)
    y.append(res[k])
plt.title(u“幸福感数量分布“ fontproperties=font)
plt.xlabel(“幸福感值“fontsize=18fontproperties=font)
plt.ylabel(u‘数量‘fontsize=18fontproperties=font)
plt.bar(xy)
plt.show()

# 数据初步处理
train_data_y = train_data.happiness
# print(train_data_y)
# 删除含有y值的列
train_data.drop([“happiness“] axis=1 inplace=True)
# 合并训练集和测试集
data = pd.concat((train_data test_data) axis=0)

# 调查时间是对幸福感影响不大,故删掉
data.drop(“survey_time“ axis=1 inplace=True)
# print(data)

# 首先处理特征,首先获取每个特征缺失的情况
percent = (data.isnull().sum() / data.isnull().count()).sort_values(ascending=False)
tmp = percent.to_dict()
# print(tmp)

#可视化缺失率
tmp1=[]
tmp2=[]
for indexk in enumerate(percent):
    tmp1.append(index)
    tmp2.append(k)
plt.ylabel(u“缺失率“fontproperties=font)
plt.xlabel(u“特征“fontproperties=font)
plt.bar(tmp1tmp2)
plt.show()

# 获取缺失率大于50%的特征
tmp1 = [];
tmp2 = []
for k in tmp:
    if float(tmp[k]) > 0.5:
        tmp1.append(k)
        tmp2.append(float(tmp[k]))
# print(tmp1)

#可视化缺失率大于50%的特征
plt.ylabel(u“缺失率“fontproperties=font)
plt.xlabel(u“特征“fontproperties=font)
plt.bar(tmp1tmp2)
plt.show()

# 由于缺失率过高,因此删除确实率大于50%的特征
data.drop(tmp1 axis=1 inplace=True)
# print(data)

#当去除一部分缺失率过大的特征之后,开始处理缺失率并不高的某些特征,对其进行填充
#打印仍然有缺失值的特征
tmp1=[];tmp2=[]
for k in tmp:
    if float(tmp[k])<0.5 and float(tmp[k])>0:
        tmp1.append(k)
        tmp2.append(float(tmp[k]))
#print(tmp1)

# 观察到marital_now以及marital_1st的空缺可能是由于未结婚造成的,填充为9997
# print(“marital_now“data.marital_now.isnull().sum())
data.marital_now.fillna(9997 inplace=True)
# print(“marital_1st“data.marital_1st.isnull().sum())
data.marital_1st.fillna(9997 inplace=True)
# 同样,s_xxx这一类特征,都是关于被调查人配偶的情况,也可能是由于被调查人可能没有配偶而导致该项缺失,因此将该项用0填补。
# print(“s_political“data.s_political.isnull().sum())
data.s_political.fillna(0 inplace=True)
# print(“s_hukou“data.s_hukou.isnull().sum())
data.s_hukou.fillna(0 inplace=True)
# print(“s_income“data.s_income.isnull().sum())
data.s_income.fillna(0 inplace=True)
# print(“s_birth“data.s_birth.isnull().sum())
data.s_birth.fillna(0 in

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件       73072  2020-07-25 11:43  happiness_submit.csv
     文件        8948  2020-07-25 11:06  main.py

评论

共有 条评论