利用pandas解决兵王问题数据处理部分

问题来源:小曾前几天学习浙大的机器学习课程,老师给出了兵王问题,这里仅对兵王问题的数据进行处理(SVM部分还在努力学习
数据来源 https://archive.ics.uci.edu/ml/index.php
数据大致内容:六维数据,还有最后一列表示两种情况,一种情况是draw,draw的意思是和棋,其余的英文数字表示,黑棋将在多少步之内被白棋杀死。
数据处理方法:
1、使用svm的时候需要对数据进行分类将draw的标为-1将其余的标记为1。六维数据中还有英文字母abcdefgh,在国际象棋中由这些字母表示列,所以需要将其转换成1-8的数字。
2、数据的归一化处理,处理的公式:newX=[X-means(x)]/std(x)
3、输出数据

这里使用的是python的pandas库

import pandas as pd
filename="D:\learning\兵王问题\krkopt.data"
data=pd.read_csv(filename,header=None)#header=None原始数据没有索引列,为其加上
for i in [0,2,4]:#循环0,2,4的位置,如果在0,2,4列的地方有字母则替换成数
    data.loc[data[i]=='a',i] = 1
    data.loc[data[i]=='b',i] = 2
    data.loc[data[i]=='c',i] = 3
    data.loc[data[i]=='d',i] = 4
    data.loc[data[i]=='e',i] = 5
    data.loc[data[i]=='f',i] = 6
    data.loc[data[i]=='g',i] = 7
    data.loc[data[i]=='h',i] = 8

data.loc[data[6]=="draw",6]=-1 #设置标签,draw为-1其余为1
data.loc[data[6]!=-1,6]=1

for i in range(5):#数据归一化处理
    data[i] = (data[i]-data[i].mean())/data[i].std()    
data.to_csv("krkopt_pr.data",header =None,index=None)#使用.to_csv这个方法进行输出数据,其中header表示是否保留列名,index:是否保留行索引

关于to_csv的更多参数使用请参考

https://blog.csdn.net/toshibahuai/article/details/79034829

你可能感兴趣的:(学习笔记)