前面机器学习 K-近邻算法(一)博客中值为连续值。我们要进行朴素贝叶斯分类时需要对数据进行离散处理,简单的是进行01处理。
1 首先,惯例pandas读取数据变成DataFrame,查看数据及数据描述。(如需数据请留言,博客没办法上传附件请见谅)
import time
import numpy as np
import pandas as pd
group = pd.read_table('bayes.txt',header=None,usecols = (0,1,3))
print('原始数据\n',group)
print(group.describe())
注:这里header设为None,否则会默认把第一行数据当成列标签。usecols=(0,1,3)表示只取bayes.txt数据的第0,1,3行数据。
运行结果:
2 对3行标签行进行转换,didntLike转化为值0,smallDoses转化为值1,largeDoses转化为值2.
#标签进行01处理
group = group.replace('didntLike',0)
group = group.replace('smallDoses',1)
group = group.replace('largeDoses',2)
3 对0行飞行时间行进行01处理,低于等于样本数据平均飞行时间的转为0,否则为1
# Fly进行01处理
Fly_s = group[0]
Fly_mean = Fly_s.mean()
Fly_s[Fly_s<=Fly_mean] = 0
Fly_s[Fly_s>Fly_mean] = 1
4 对1行玩游戏时间行进行处理,也是低于平均值为0,否则为1
# Game进行01处理
Game_s = group[1]
Game_mean = Game_s.mean()
Game_s[Game_s<=Game_mean] = 0
Game_s[Game_s>Game_mean] = 1
5 查看处理后的数据
print('01处理后数据\n',group)
print(group.describe())