1、用Python转化为标准格式。
import pandas as pd
import numpy as np
from pandas import Series, DataFrame
from sklearn.preprocessing import LabelEncoder
#一般操作
#读文件:
#e:/cate_data/before/filename.txt
#1将文件读入成Dataframe数据。分隔符默认为"\t",读的时候文件中无列名(否则把第一行作为列名)。
data = pd.read_table('old_path',',',header = None)
#2类别型数据转化为数字表示。
num = data.shape[1]
for i in range(num):
dimensional_name = data.columns[i]#第i个维度的列名。
data[dimensional_name] = LabelEncoder().fit_transform(data[dimensional_name].values)#转化
#3将DataFrame数据写入文件。写的时候不要索引和标题。
data.to_csv('new_path',index=False,header=None)
#附加操作
data = data.drop(data.columns[1],axis = 1) #去掉第1(二)行。
length = len(data[data.columns[2]][0].split()[0])#字符串长度
data1 = DataFrame(columns=range(length))#初始化一个空的DataFrame。
for i in range(data[data.columns[1]].shape[0]):
a = list(data[data.columns[1]][i].split())
b = list(a[0])
# 将字典输入给DataFrame构造器,各项会成为DataFrame的一行,字典健将成为DataFrame的列标
dashabi = dict(zip(list(range(length)),b))
dashabi1 = DataFrame(dashabi,index=[0])
# 往DataFrame添加行的方式(gnore_index=True表示去掉原来的行标,重新开始编排)
data1= data1.append(dashabi1,ignore_index=True)
# pd.concat([data1, dashabi1, dashabi2, ...], ignore_index=True)(第二种)
data = data.drop(data.columns[1],axis = 1) #去掉第1(二)行。
data1 = pd.concat([data1,data],axis =1,ignore_index=True)#axis默认为0,列拼接。
data = data1
#额外操作
del data[0] #删除第0列,删除后列编号就没有0了。
data.columns = range(10) #给列重新编号。
data.dtypes #查看每一列的数据类型。
输出:
0 int64
1 int64
2 int64
3 int64
4 int64
5 object #第五列含有异常值'?'。
6 int64
7 int64
8 int64
9 int64
dtype: object
#去除含有异常值的行
#1统计含有异常值的行。
j = []
for i in range(699):
if(data[5][i] == '?'): #是字符。
j.append(i)
#2删除行。
data = data.drop(j)
#3行重新编号。
data.index = range(len(data.index))
#4将类型转化为int64。
data[5] = pd.to_numeric(data[5])
#查看每一列的数据类型。
data.dtypes
输出:
0 int64
1 int64
2 int64
3 int64
4 int64
5 int64 #转化完毕。
6 int64
7 int64
8 int64
9 int64
dtype: object
#mushroom(替换缺失值(异常值'?'))。
#1读入。
data = pd.read_table('e:/lxt/cate_data/before/mushroom.txt',',',header = None)
#2统计含有异常值的列。
l = []
for i in range(data.shape[1]):
if '?' in pd.unique(data[i]):
l.append(i)
#3随机替换异常值为值域中的值。
for i in l:
#生成值域(pd.unique返回类型为numpy.ndarray)。
hahaha = pd.unique(data[i])['?' != pd.unique(data[i])]
for j in range(data.shape[0]):
if(data[i][j] == '?'):
#随机从值域挑选替换。
data[i][j] = hahaha[np.random.randint(0,hahaha.shape[0])]
#转化为连续数字。
for i in range(data.shape[1]):
dimensional_name = data.columns[i]#第i个维度的列名。
data[dimensional_name] = LabelEncoder().fit_transform(data[dimensional_name].values)
#将类别换到最后。
label = data[0].copy()
del data[0]
data = pd.concat([data,label],axis =1,ignore_index=True)
#输出。
data.to_csv('e:/lxt/cate_data/after/mushroom.txt',index=False,header=None)
data.to_csv('e:/lxt/cate_data/after/mushroom.csv',index=False,header=None)
数据:UCI数据集:Soybean(small),Connect4,Promoters。
需要进行附加操作的数据:Promoters:
+,S10, tactagcaatacgcttgcgttcggtggttaagtatgtataatgcgcgggcttgtcgt
+,AMPC, tgctatcctgacagttgtcacgctgattggtgtcgttacaatctaacgcatcgccaa
+,AROH, gtactagagaactagtgcattagcttatttttttgttatcatgctaaccacccggcg
+,DEOP2, aattgtgatgtgtatcgaagtgtgttgcggagtagatgttagaatactaacaaactc
+,LEU1_TRNA, tcgataattaactattgacgaaaagctgaaaaccactagaatgcgcctccgtggtag
+,MALEFG, aggggcaaggaggatggaaagaggttgccgtataaagaaactagagtccgtttaggt
+,MALK, cagggggtggaggatttaagccatctcctgatgacgcatagtcagcccatcatgaat
+,RECA, tttctacaaaacacttgatactgtatgagcatacagtataattgcttcaacagaaca
+,RPOB, cgacttaatatactgcgacaggacgtccgttctgtgtaaatcgcaatgaaatggttt
+,RRNAB_P1, ttttaaatttcctcttgtcaggccggaataactccctataatgcgccaccactgaca
+,RRNAB_P2, gcaaaaataaatgcttgactctgtagcgggaaggcgtattatgcacaccccgcgccg
+,RRNDEX_P2, cctgaaattcagggttgactctgaaagaggaaagcgtaatatacgccacctcgcgac
+,RRND_P1, gatcaaaaaaatacttgtgcaaaaaattgggatccctataatgcgcctccgttgaga
+,RRNE_P1, ctgcaatttttctattgcggcctgcggagaactccctataatgcgcctccatcgaca
+,RRNG_P1, tttatatttttcgcttgtcaggccggaataactccctataatgcgccaccactgaca
+,RRNG_P2, aagcaaagaaatgcttgactctgtagcgggaaggcgtattatgcacaccgccgcgcc
+,RRNX_P1, atgcatttttccgcttgtcttcctgagccgactccctataatgcgcctccatcgaca
+,TNAA, aaacaatttcagaatagacaaaaactctgagtgtaataatgtagcctcgtgtcttgc
+,TYRT, tctcaacgtaacactttacagcggcgcgtcatttgatatgatgcgccccgcttcccg
+,ARAC, gcaaataatcaatgtggacttttctgccgtgattatagacacttttgttacgcgttt
+,LACI, gacaccatcgaatggcgcaaaacctttcgcggtatggcatgatagcgcccggaagag
+,MALT, aaaaacgtcatcgcttgcattagaaaggtttctggccgaccttataaccattaatta
+,TRP, tctgaaatgagctgttgacaattaatcatcgaactagttaactagtacgcaagttca
+,TRPP2, accggaagaaaaccgtgacattttaacacgtttgttacaaggtaaaggcgacgccgc
+,THR, aaattaaaattttattgacttaggtcactaaatactttaaccaatataggcatagcg
+,BIOB, ttgtcataatcgacttgtaaaccaaattgaaaagatttaggtttacaagtctacacc
+,FOL, catcctcgcaccagtcgacgacggtttacgctttacgtatagtggcgacaatttttt
+,UVRBP1, tccagtataatttgttggcataattaagtacgacgagtaaaattacatacctgcccg
+,UVRBP3, acagttatccactattcctgtggataaccatgtgtattagagttagaaaacacgagg
+,LEXA, tgtgcagtttatggttccaaaatcgccttttgctgtatatactcacagcataactgt
+,PORI-L, ctgttgttcagtttttgagttgtgtataacccctcattctgatcccagcttatacgg
+,SPOT42, attacaaaaagtgctttctgaactgaacaaaaaagagtaaagttagtcgcgtagggt
+,M1RNA, atgcgcaacgcggggtgacaagggcgcgcaaaccctctatactgcgcgccgaagctg
+,GLNS, taaaaaactaacagttgtcagcctgtcccgcttataagatcatacgccgttatacgt
+,TUFB, atgcaattttttagttgcatgaactcgcatgtctccatagaatgcgcgctacttgat
+,SUBB-E, ccttgaaaaagaggttgacgctgcaaggctctatacgcataatgcgccccgcaacgc
+,STR, tcgttgtatatttcttgacaccttttcggcatcgccctaaaattcggcgtcctcata
+,SPC, ccgtttattttttctacccatatccttgaagcggtgttataatgccgcgccctcgat
+,RPOA, ttcgcatatttttcttgcaaagttgggttgagctggctagattagccagccaatctt
+,RPLJ, tgtaaactaatgcctttacgtgggcggtgattttgtctacaatcttacccccacgta
+,PORI-R, gatcgcacgatctgtatacttatttgagtaaattaacccacgatcccagccattctt
+,ALAS, aacgcatacggtattttaccttcccagtcaagaaaacttatcttattcccacttttc
+,ARABAD, ttagcggatcctacctgacgctttttatcgcaactctctactgtttctccatacccg
+,BIOA, gccttctccaaaacgtgttttttgttgttaattcggtgtagacttgtaaacctaaat
+,DEOP1, cagaaacgttttattcgaacatcgatctcgtcttgtgttagaattctaacatacggt
+,GALP2, cactaatttattccatgtcacacttttcgcatctttgttatgctatggttatttcat
+,HIS, atataaaaaagttcttgctttctaacgtgaaagtggtttaggttaaaagacatcagt
+,HISJ, caaggtagaatgctttgccttgtcggcctgattaatggcacgatagtcgcatcggat
+,ILVGEDA, ggccaaaaaatatcttgtactatttacaaaacctatggtaactctttaggcattcct
+,LACP1, taggcaccccaggctttacactttatgcttccggctcgtatgttgtgtggaattgtg
+,LPP, ccatcaaaaaaatattctcaacataaaaaactttgtgtaatacttgtaacgctacat
+,TRPR, tggggacgtcgttactgatccgcacgtttatgatatgctatcgtactctttagcgag
+,UVRB_P2, tcagaaatattatggtgatgaactgtttttttatccagtataatttgttggcataat
-, 867, atatgaacgttgagactgccgctgagttatcagctgtgaacgacattctggcgtcta
-,1169, cgaacgagtcaatcagaccgctttgactctggtattactgtgaacattattcgtctc
-, 802, caatggcctctaaacgggtcttgaggggttttttgctgaaaggaggaactatatgcg
-, 521, ttgacctactacgccagcattttggcggtgtaagctaaccattccggttgactcaat
-, 918, cgtctatcggtgaacctccggtatcaacgctggaaggtgacgctaacgcagatgcag
-,1481, gccaatcaatcaagaacttgaagggtggtatcagccaacagcctgacatccttcgtt
-,1024, tggatggacgttcaacattgaggaaggcataacgctactacctgatgtttactccaa
-,1149, gaggtggctatgtgtatgaccgaacgagtcaatcagaccgctttgactctggtatta
-, 313, cgtagcgcatcagtgctttcttactgtgagtacgcaccagcgccagaggacgacgac
-, 780, cgaccgaagcgagcctcgtcctcaatggcctctaaacgggtcttgaggggttttttg
-,1384, ctacggtgggtacaatatgctggatggagatgcgttcacttctggtctactgactcg
-, 507, atagtctcagagtcttgacctactacgccagcattttggcggtgtaagctaaccatt
-, 39, aactcaaggctgatacggcgagacttgcgagccttgtccttgcggtacacagcagcg
-,1203, ttactgtgaacattattcgtctccgcgactacgatgagatgcctgagtgcttccgtt
-, 988, tattctcaacaagattaaccgacagattcaatctcgtggatggacgttcaacattga
-,1171, aacgagtcaatcagaccgctttgactctggtattactgtgaacattattcgtctccg
-, 753, aagtgcttagcttcaaggtcacggatacgaccgaagcgagcctcgtcctcaatggcc
-, 630, gaagaccacgcctcgccaccgagtagacccttagagagcatgtcagcctcgacaact
-, 660, ttagagagcatgtcagcctcgacaacttgcataaatgctttcttgtagacgtgccct
-,1216, tattcgtctccgcgactacgatgagatgcctgagtgcttccgttactggattgtcac
-, 835, tgctgaaaggaggaactatatgcgctcatacgatatgaacgttgagactgccgctga
-, 35, catgaactcaaggctgatacggcgagacttgcgagccttgtccttgcggtacacagc
-,1218, ttcgtctccgcgactacgatgagatgcctgagtgcttccgttactggattgtcacca
-, 668, catgtcagcctcgacaacttgcataaatgctttcttgtagacgtgccctacgcgctt
-, 413, aggaggaactacgcaaggttggaacatcggagagatgccagccagcgcacctgcacg
-, 991, tctcaacaagattaaccgacagattcaatctcgtggatggacgttcaacattgagga
-, 751, tgaagtgcttagcttcaaggtcacggatacgaccgaagcgagcctcgtcctcaatgg
-, 850, ctatatgcgctcatacgatatgaacgttgagactgccgctgagttatcagctgtgaa
-, 93, gcggcagcacgtttccacgcggtgagagcctcaggattcatgtcgatgtcttccggt
-,1108, atccctaatgtctacttccggtcaatccatctacgttaaccgaggtggctatgtgta
-, 915, tggcgtctatcggtgaacctccggtatcaacgctggaaggtgacgctaacgcagatg
-,1019, tctcgtggatggacgttcaacattgaggaaggcataacgctactacctgatgtttac
-, 19, tattggcttgctcaagcatgaactcaaggctgatacggcgagacttgcgagccttgt
-,1320, tagagggtgtactccaagaagaggaagatgaggctagacgtctctgcatggagtatg
-, 91, cagcggcagcacgtttccacgcggtgagagcctcaggattcatgtcgatgtcttccg
-, 217, ttacgttggcgaccgctaggactttcttgttgattttccatgcggtgttttgcgcaa
-, 957, acgctaacgcagatgcagcgaacgctcggcgtattctcaacaagattaaccgacaga
-, 260, ggtgttttgcgcaatgttaatcgctttgtacacctcaggcatgtaaacgtcttcgta
-, 557, aaccattccggttgactcaatgagcatctcgatgcagcgtactcctacatgaataga
-,1355, agacgtctctgcatggagtatgagatggactacggtgggtacaatatgctggatgga
-, 244, tgttgattttccatgcggtgttttgcgcaatgttaatcgctttgtacacctcaggca
-, 464, tgcacgggttgcgatagcctcagcgtattcaggtgcgagttcgatagtctcagagtc
-, 296, aggcatgtaaacgtcttcgtagcgcatcagtgctttcttactgtgagtacgcaccag
-, 648, ccgagtagacccttagagagcatgtcagcctcgacaacttgcataaatgctttcttg
-, 230, cgctaggactttcttgttgattttccatgcggtgttttgcgcaatgttaatcgcttt
-,1163, tatgaccgaacgagtcaatcagaccgctttgactctggtattactgtgaacattatt
-,1321, agagggtgtactccaagaagaggaagatgaggctagacgtctctgcatggagtatga
-, 663, gagagcatgtcagcctcgacaacttgcataaatgctttcttgtagacgtgccctacg
-, 799, cctcaatggcctctaaacgggtcttgaggggttttttgctgaaaggaggaactatat
-, 987, gtattctcaacaagattaaccgacagattcaatctcgtggatggacgttcaacattg
-,1226, cgcgactacgatgagatgcctgagtgcttccgttactggattgtcaccaaggcttcc
-, 794, ctcgtcctcaatggcctctaaacgggtcttgaggggttttttgctgaaaggaggaac
-,1442, taacattaataaataaggaggctctaatggcactcattagccaatcaatcaagaact
2、用R语言读入。
#函数(自己写)
read_data <- function(file_path,header = FALSE){
data_list = read.csv(file = file_path,header = header)
dimensional_num = length(data_list)
data_num = length(data_list[[1]])
dataset = list()
data_set = matrix(0,dimensional_num-1,data_num)
for (i in 1:(dimensional_num-1)) {
data_set[i,] = data_list[[i]]
}
dataset$data = data_set
dataset$label = data_list[[dimensional_num]]
dataset$hidden_clusters = Hidden_clusters(dataset$label)
return(dataset)
}
#label生成(原分类)
Hidden_clusters <- function(data_labels){
uni = unique(data_labels)
num = length(data_labels)
hidden_clusters = list()
i = 1
for(j in uni){
hidden_clusters[[i]] = (1:num)[data_labels == j]
i = i + 1
}
return(hidden_clusters)
}
#读入(例子)
Soybean = read_data(file_path = "e:\\lxt\\cate_data\\after\\soybean.txt")