泰迪杯数据挖掘挑战赛—机器学习(一)

机器学习(一)

之前文章
一、数据预处理(一)
二、数据预处理(二)
之前的两篇文章主要讲解了在需要做的准备工作,数据预处理。数据处理完成之后,我们接下来就要做机器学习来预测数据了。

数据不平衡处理

需要注意:这次的A题,在数据上是非常失衡的
泰迪杯数据挖掘挑战赛—机器学习(一)_第1张图片

从图中可以看出,造假公司与非造假公司数量相差极大,样本数据严重失衡。严重失衡的样本将会导致在后面的机器学习中,使得学习结果更加偏向于非造假公司,导致预测结果出现较大的偏差。本题在处理数不平衡时主要是考虑了下采样算法与过采样算法。

过采样处理

过采样主要是通过合成少数类样本以此来达到数据平衡
泰迪杯数据挖掘挑战赛—机器学习(一)_第2张图片
在本次研究中采样过采样方法处理样本不均衡问题,因为制造业的数据量较大,使用过采样能够更好的利用数据。
代码:

#导入相应的包
import pandas as pd
from sklearn.model_selection import train_test_split
from collections import Counter
from imblearn.over_sampling import SMOTE
from collections import Counter
#导入数据
data = pd.read_excel('前五年数据_30.xlsx')

x = data.iloc[:,1:-1]
y = data.iloc[:,-1]
# # 划分训练集和测试集
x_train, x_test, y_train, y_test = train_test_split(x,y,test_size=0.40)
x_trian = pd.DataFrame(x_train)
x_test = pd.DataFrame(x_test)
y_train = pd.DataFrame(y_train)
y_test = pd.DataFrame(y_test)
#查看训练集合测试集中 flag的分类情况
print('训练集中因变量 FLAG 分类情况:{}'.format(Counter(y_train["FLAG"])))
print('测试集因变量 FLAG 分类情况:{}'.format(Counter(y_test['FLAG'])))


sos = SMOTE(random_state=0)
x_train_smote, y_train_smote = sos.fit_resample(x_train, y_train)
print('SMOTE过采样后,训练集 y_sos 中的分类情况:{}'.format(Counter(y_train_smote["FLAG"])))
x_train_smote.to_excel('x_train_smote.xlsx')
y_train_smote.to_excel('y_train_smote.xlsx')
x_test.to_excel('x_test.xlsx')
y_test.to_excel('y_test.xlsx')

总结

数据挖掘漫漫长路,需要 一步一个脚印走踏实了才能得出一个好的结果,,,

你可能感兴趣的:(Python数据挖掘,数据挖掘,机器学习,人工智能,大数据,python)