数据挖掘(一):数据探索和分析

本文介绍了使用Python进行机器学习模型构建的过程,包括数据预处理、特征选择、模型训练及评估。通过随机森林分类器对数据集进行训练,并分析了模型的过拟合情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、导出包和数据

1.1 导入包

# 导入包
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.preprocessing import MinMaxScaler
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.ensemble import RandomForestClassifier
from sklearn.ensemble import GradientBoostingClassifier
from sklearn.metrics import classification_report

plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False
%matplotlib inline

1.2 导入源数据

org_data = pd.read_csv("data.csv", encoding = 'gbk')
print(org_data.shape)
# (4754, 90)

二、数据探索

写在最前面:因组织者未提供本次task数据的配套字段说明、任务描述也很简略,故大概走下流程吧,后续会持续完善。

2.1 浏览数据

org_data.head()

在这里插入图片描述
第一列初步估计是导出的索引,去掉第一列

org_data = org_data.ix[:,1:]

正样本占比为25%,比例较低

org_data.groupby('status')['status'].count()

在这里插入图片描述

2.2 数据类型分析

org_data.dtypes
org_data.info(memory_usage='deep')

在这里插入图片描述
在这里插入图片描述

2.3 缺失数据分析

缺失变量占比统计:居然有70个变量都有缺失!

missing_rate_t = 1 - org_data.describe().T['count'] / len(org_data)
missing_rate = missing_rate_t[missing_rate_t > 0].sort_values(ascending = False)
print(len(missing_rate))

删除缺失比例较高的变量,这里删除缺失超过50%的变量

missing_rate_50 = missing_rate_t[missing_rate_t > 0.5].sort_values(ascending = False)
print(missing_rate_50)

在这里插入图片描述
删除缺失占比超过50%的变量student_feature

org_data1 = org_data.drop(missing_rate_50.index, axis=1)

剩下69个缺失变量,缺失比例较低,对数值缺失变量采用均值替换,对分类变量采用众数替换
在这里插入图片描述
在这里插入图片描述

2.4 无关特征删除

2.4.1 连续变量——相关系数,将相关系数较低的变量删除
# 连续变量——相关系数,将相关系数较低的变量删除
org_data1_corr = abs(org_data1.corr()['status'])
org_data1_corr_re = org_data1_corr[org_data1_corr.values < 0.02].index
print(org_data1_corr_re)

在这里插入图片描述

#数值型变量剩余61个,依然较多
var_num_f =list(set(var_num)- set(org_data1_corr_re))
print(len(var_num_f))

2.4.2 分类变量——卡方检验,检验不显著的删除

除日期变量外仅一个分类变量,暂时不做处理

三、模型构建和评估

tf = RandomForestClassifier(n_estimators=500, min_samples_leaf = 5)
tf_model = tf.fit(x_train, y_train)
tf_model

在这里插入图片描述

# 存在过拟合的情况,需要调整
print("拟合效果:")
print(tf_model.score(x_train, y_train))
print(classification_report(y_train, tf_model.predict(x_train)))
print("预测效果:")
print(tf_model.score(x_test, y_test))
print(classification_report(y_test, tf_model.predict(x_test)))

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值