机器学习——挖掘幸福感(task04_1)

天池大赛—一起挖掘幸福感笔记1

数据来源:https://tianchi.aliyun.com/competition/entrance/231702/information

选用的数据是精简版的训练集happiness_train_abbr.csv

思路:
1、打开数据表,大概理解每一个特征的含义
2、导入数据表,对数据进行预处理,处理的方式有删除某些无关的特征,例如调查时间与省份城市等,对缺失值进行填充,对含义模糊的变量均用众数进行填充,对数据进行去极值,标准化。等出初步的处理完的数据。
3、分好特征值与标签值,Y= happiness 。将特征值与标签值进行分割,分7分为训练集,3份为测试集。
4、运用机器学习等算法,调整算法中各种超参数对数据进行训练与评估,最后得出结果,保存最好的训练模型。

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier as DTC
from sklearn.ensemble import RandomForestClassifier as RFC

pd.set_option('expand_frame_repr', False)  # 当列太多时不换行


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)


def standardize_series(series):  # 标准化
    std = series.std()
    mean = series.mean()
    return (series - mean) / std


# 读取数据
data = pd.read_csv(r"D:\机器学习挖掘幸福感\data\happiness_train_abbr.csv", encoding="gbk")
# 查看数据的信息
# print(data.info())
# 删除除调查日期,删除缺失值很多的列
dele_list = ['work_status', 'work_yr', 'work_type', 'work_manage', 'survey_time']
data.drop(dele_list, axis=1, inplace=True)

# 删除自认为无关的特征
dro_list = ['birth', 'province', 'city', 'county']
data.drop(dro_list, axis=1, inplace=True)

# 删除所有为空值的行
data = data.dropna()
# print(data.info())
# print(data.describe())
# 获取可以给出明确回答幸福感指数的样本,最后还有7987个样本
data = data[data["happiness"] > 0]

# 对不确定的数据全部都用中位数进行处理
for column in data.columns:
    data[column][data[column] < 0] = data[column].median()

# 删除ID列,重新建立索引
data.set_index('id', inplace=True)
# 对以下特征进行标准化
stand_list = ['income', 'floor_area', 'family_income']
for stand in stand_list:
    data[stand] = standardize_series(data[stand])
# print(data.describe())

# 划分标签与特征
Y = data["happiness"]
X = data.drop("happiness", axis=1)
# print(X.head())

# 划分训练集与测试集
Xtrain, Xtest, Ytrain, Ytest = train_test_split(X, Y, test_size=0.3, random_state=200)

clf = DTC(random_state=0)
rfc = RFC(random_state=0)

clf = clf.fit(Xtrain, Ytrain)
rfc = rfc.fit(Xtrain, Ytrain)

score_c = clf.score(Xtest, Ytest)
score_r = rfc.score(Xtest, Ytest)

print("single Tree:{}\n".format(score_c)
      , "Random Forest:{}".format(score_r)
      )

最好输出结果:
single Tree:0.47768043387567793
Random Forest:0.6166040884438881

总结:暂时就先用精简版的数据进行训练,明天再去优化模型与调用更多的机器学习方法,再添加评价指标,将指标进行可视化。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Python机器学习入门的第一个任务是处理数据。数据是机器学习的基础,因此了解如何处理和准备数据是非常重要的。在Python中,有许多库和工具可用于数据处理,例如NumPy和Pandas。NumPy是一个用于科学计算的强大库,可以处理多维数组和矩阵。Pandas是一个用于数据分析和处理的库,它提供了灵活的数据结构和数据操作功能。 在任务1中,您需要学习如何加载数据集,了解数据的结构和特征,处理缺失值和异常值,进行数据清洗和转换等。您可以使用Pandas库来加载和处理数据集,使用其提供的函数和方法来完成这些任务。例如,您可以使用Pandas的read_csv函数来加载CSV文件,使用head函数来查看数据的前几行,使用describe函数来获取数据的统计信息,使用dropna函数来删除缺失值等。 此外,您还可以使用Matplotlib和Seaborn等库来可视化数据,以便更好地理解数据的分布和关系。这些库提供了各种绘图函数和方法,可以创建直方图、散点图、箱线图等。 总之,Python机器学习入门的第一个任务是数据处理,您需要学习如何加载、清洗和转换数据。使用Pandas、NumPy和其他相关库可以帮助您完成这些任务。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* *2* *3* [python机器学习模块_机器学习所需的python基础知识及其库模块](https://blog.csdn.net/weixin_26711425/article/details/108935596)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值