Mooplab西南财经大学“新网银行杯”数据科学竞赛小结与学习笔记

Mooplab“新网银行杯”个人小结与学习笔记

一、前期准备

安装pycharm并配置环境

链接: link.

在pycharm中安装第三方库

1.在pycharm中安装:
File>>Other Settings>>Setting for new porjects>>Porject Interpreter 选择自己的环境,然后点右边的‘+’,搜索自己需要的包,然后下载就ok了。
2.在电脑终端安装:
有时候会出现一些异常情况,诸如下载失败、下载后依然显示没有这个库。这时候就需要在电脑终端下载:win+R>>输入cmd>>pip install +’ '(引号内为要添加的库)。
当然这里不是一定要选择pycharm作为编译环境,诸如此类的软件还有很多。

二、个人小结

比赛链接: link.
由于是第一次参加此类数据挖掘比赛,拿到题目看完之后并没有什么实际的想法,先是去参考了一下往届比赛获奖者的总结分析,这里是2018年“新网银行杯”第二名的总结与分享:链接: link.
之后像无头苍蝇一样去粗略学习了SVM支持向量机逻辑回归等模型,但后来发现系统的学习这些模型的概念帮助并不大,我们这里需要的仅仅是引用一下这些模型的代码(基本只有几行代码)。
在此过程中学长提供了很多帮助,其中一个是随机生成5676个数(0或1),虽然只是一个简单的代码,但是它告诉了我们这个题需要我们提交的是什么样的答案(格式,数值…)。下面是具体代码:

import numpy as np
import pandas as pd
import random
a=[]
for i in range(1,5767):
    a.append(random.randint(0,1))

a = np.array(a)
# prepare for data
data = a.reshape((5766,1))
print(data)
data_df = pd.DataFrame(data)

# change the index and column name
data_df.columns = ['target']
data_df.index = list(range(1,5767))

# create and writer pd.DataFrame to excel
writer = pd.ExcelWriter('Save_Excel.xlsx')
data_df.to_excel(writer,'page_1',float_format='%.5f') # float_format 控制精度
writer.save()

第一次开会过后,总算对思路有了一些更正确的理解,对于此类问题建模是比较简单的一个环节,具体操作为:调用pandas、numpy库读入数据,把字典型转化为矩阵,然后进行训练和预测。而之后进行的数据处理才是重中之重,并且经过实验,模型对于最终答案的影响结果不是很明显,即使是有比较好的模型,也可以在数据处理之后的环节来进行调试。下面是具体代码

import pandas as pd
import numpy as np
from sklearn.neighbors import KNeighborsClassifier
from sklearn.svm import SVC
from sklearn.linear_model import Perceptron
from sklearn.linear_model import LogisticRegression
from sklearn.tree import DecisionTreeClassifier
from sklearn.ensemble import RandomForestClassifier

# 读取数据
dfx_train = pd.read_csv(r"C:\Users\win10\Desktop\不对缺失值做处理\fx_train_nan.csv")
dfx_test = pd.read_csv(r"C:\Users\win10\Desktop\不对缺失值做处理\fx_test_nan.csv")
dfy_train = pd.read_csv(r"C:\Users\win10\Desktop\mooplab比赛数据\y_train.csv")
#print(dfx_train)

# 将数据转化为矩阵型
x_train = np.array(dfx_train)

x_test = np.array(dfx_test)

y_train = np.array(dfy_train['target'])

#下面是很多种模型
# KNN
#==================================
#knn = KNeighborsClassifier()
#knn.fit(x_train,y_train)
#y_test=knn.predict(x_test)
#print(len(y_test))
#==================================
# SVM
#==================================
#from sklearn.svm import SVC
#model = SVC(kernel='rbf', probability=True)#probability=False时,没办法调用 model.predict_proba()函数
#model.fit(x_train,y_train)
#pre = model.predict_proba(C)
#print(pre)
#y_test = model.predict(x_test)
#print(y_test)
#pnn
#from sklearn.linear_model import Perceptron
#ppn = Perceptron()
#ppn.fit(x_train, y_train)
#y_test = ppn.predict(x_test)
#==================================
# 随机森林分类
forest = RandomForestClassifier(criterion='entropy', n_estimators=10, random_state=1, n_jobs=2)
forest.fit(x_train, y_train)
y_test = forest.predict(x_test)
# 导出
#==================================
data_df = pd.DataFrame(y_test)

# change the index and column name
data_df.columns = ['target']
data_df.index = list(range(0,5767))

# create and writer pd.DataFrame to excel
writer = pd.ExcelWriter(r'C:\Users\win10\Desktop\mooplab结果\y_test.xlsx')
data_df.to_excel(writer,'page_1',float_format='%.5f') # float_format 控制精度
writer.save()

有了模型和代码之后,就进入重头戏数据分析和处理了,但是目前为止进度还是很慢,只把两个表合并了。之前对为-99的特征值进行处理之后的效果并不好,之后考虑了很多种小的变动,得分也不理想,目前准备把数据按8:2的比例分为两部分进行交叉验证,找出一些特征值。具体代码部分可以参考另一位不愿透露姓名的同学的文章,非常的详细:
链接: link.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值