sklearn实现one-hot编码处理符号型数据
1、data.csv数据
2.使用one-hot编码进行转化
from sklearn.feature_extraction import DictVectorizer
from sklearn import preprocessing
import csv
"""
函数说明:将符号特征转换为one-hot向量特征
返回值:向量特征,向量标签
"""
def DataProgress(file):
with open(file,'r') as fr:
data_csv=csv.reader(fr)
headers=next(data_csv) #获取文件的第一行头文件
featureList=[] #特征列表
labelList=[] #标签列表
for row in data_csv:
labelList.append(row[-1]) #将标签数据添加到标签列表里
rowDict={}
for i in range(1,len(row)-1):
rowDict[headers[i]]=row[i]
featureList.append(rowDict)
#特征转换为向量
vec_features=DictVectorizer()
vector_X=vec_features.fit_transform(featureList).toarray()
#标签转换为向量
vec_lbels=preprocessing.LabelBinarizer()
vector_Y=vec_lbels.fit_transform(labelList)
return vector_X,vector_Y
if __name__=='__main__':
file='data.csv'
features,labels=DataProgress(file)
print(features)
print(labels)
结果如下: