python数据分类方法_Python数据挖掘—分类—贝叶斯分类

pandas之get_dummies

方法:pandas.get_dummies(data,prefix=None,prefix_sep="_",dummy_na=False,columns=None,sparse=False,drop_first=False)

该方法可以将类别变量转换成新增的虚拟变量/指示变量

参数说明:

data:array-like、Series 、 DataFrame , 输入数据

prefix:string、list of strings、dict of strings ,default为None,get_dummies转换后,列名的前缀

columns:list-like, default为False,指定需要实现类别转换的列名

dummy_na:bool, default为False,增加一列表示空缺值,如果False就忽略空缺值

drop_first:fool,default为False ,获取K中的K-1个类别之,去除第一个

举例:

下面通过例子来进一步说明get_dummies()

1、首先构造一个数据列

1 importpandas as pd2 s=pd.Series(list('abca'))3

4 s_1=pd.get_dummies(s)

1、两个变量:s为Series、s_1为DataFrame

python数据分类方法_Python数据挖掘—分类—贝叶斯分类_第1张图片变成→

python数据分类方法_Python数据挖掘—分类—贝叶斯分类_第2张图片

2、去除第一列

1 b=pd.get_dummies(s,drop_first=True)

得到:

python数据分类方法_Python数据挖掘—分类—贝叶斯分类_第3张图片

3、查看dummy_na功能

创建数据

1 importnumpy as np2 s_2=["a","b",np.nan]

结果为:

python数据分类方法_Python数据挖掘—分类—贝叶斯分类_第4张图片

1 pd.get_dummies(s_2,dummy_na=True)2 pd.get_dummies(s_2,dummy_na=False)

结果为:

python数据分类方法_Python数据挖掘—分类—贝叶斯分类_第5张图片

python数据分类方法_Python数据挖掘—分类—贝叶斯分类_第6张图片

4、创建数据框

1 df=pd.DataFrame({2 "A":["a","b","a"],"B":["b","a","c"],3 "C":[1,2,3]})4 pd.get_dummies(df,prefix=["col_1","col_2"])

结果为:

python数据分类方法_Python数据挖掘—分类—贝叶斯分类_第7张图片变为→

python数据分类方法_Python数据挖掘—分类—贝叶斯分类_第8张图片

实例:

1 importpandas2

3 data=pandas.read_csv(4 "C:\\Users\\Jw\\Desktop\\python_work\\Python数据挖掘实战课程课件\\5.2\\data1.csv",5 encoding='utf-8')6

7

8 dummyColumns=['症状','职业']9

10 for column indummyColumns:11 data[column]=data[column].astype('category')12

13

14 dummiesData=pandas.get_dummies(15 data,16 columns=dummyColumns,17 prefix=dummyColumns,18 prefix_sep=' ')19

20 dummiesData=pandas.get_dummies(21 data,22 columns=dummyColumns,23 prefix=dummyColumns,24 prefix_sep=' ',25 drop_first=True)

python数据分类方法_Python数据挖掘—分类—贝叶斯分类_第9张图片构造虚拟变量

python数据分类方法_Python数据挖掘—分类—贝叶斯分类_第10张图片

drop_first后

python数据分类方法_Python数据挖掘—分类—贝叶斯分类_第11张图片

实例

步骤:

导入数据,设置虚拟变量,将虚拟变量转变为category类,(category变量)类别变量转换成新增的虚拟变量/指示变量

通过pandas自带的get_dummies功能,将所有分类扁平化扩张以增加列的形式实现,离散数据按照[0,1]分布。

知识点:

Categorical Type:什么是categorical Type?不知道确切的英文翻译,但是可以按照字面意思来也就是分类数据,比如皮肤的颜色,可以分为黄色,白色,黑色等等,但是这些数据的均值以及数值计算比如加减的结果是没有意义的;但是我们可以将不同的数据分为这几类,在比如人类的性别,男女也属于categorical 类别; 英文中欧冠也可以称之为Nominal Data.

1 importpandas;2

3 data =pandas.read_csv(4 "C:\\Users\\Jw\\Desktop\\python_work\\Python数据挖掘实战课程课件\\5.2\\data1.csv",5 encoding='utf8'

6 )7

8 dummyColumns = ['症状', '职业']9

10 for column indummyColumns:11 data[column]=data[column].astype('category')12

13 dummiesData = pandas.get_dummies( #调用get_dummyColumns方法进行不可比较大小虚拟变量的转换

14 data,15 columns=dummyColumns,16 prefix=dummyColumns,17 prefix_sep=" "

18 )19

20 dummiesData =pandas.get_dummies(21 data,22 columns=dummyColumns,23 prefix=dummyColumns,24 prefix_sep=" ",25 drop_first=True26 )

1 #伯努利贝叶斯

2 from sklearn.naive_bayes importBernoulliNB3 BNBModel =BernoulliNB()4

5 fNames = ['症状 打喷嚏', '职业 建筑工人', '职业 护士', '职业 教师']6 tData = dummiesData['疾病']7 fData =dummiesData[fNames]8

9 BNBModel.fit(fData, tData)

上述代码:建模,构造伯努利方程,设置自变量和因变量,训练变量,得到训练集

1 #病症是打喷嚏的建筑工人

2 newData =pandas.DataFrame({3 '症状':['打喷嚏'],4 '职业':['建筑工人']5 })6

7 for column indummyColumns:8 newData[column] =newData[column].astype(9 'category',10 categories=data[column].cat.categories11 )12

13 dummiesNewData =pandas.get_dummies(14 newData,15 columns=dummyColumns,16 prefix=dummyColumns,17 prefix_sep=" ",18 drop_first=True19 )20

21 pData =dummiesNewData[fNames]22 BNBModel.predict(pData)

训练:

1 #病症是打喷嚏的建筑工人

2 newData=pandas.DataFrame({3 '症状':['打喷嚏'],4 '职业':['建筑工人']})5

6 for column indummyColumns:7 newData[column]=newData[column].astype(8 'category',9 categories=data[column].cat.categories10 )11

12 dummiesNewData=pandas.get_dummies(13 newData,14 columns=dummyColumns,15 prefix=dummyColumns,16 prefix_sep=' ',17 drop_first=True)18

19 pData=dummiesNewData[fNames]20 BNBModel.predict(pData)

你可能感兴趣的:(python数据分类方法)