Python数据挖掘—回归—贝叶斯分类

Posted 我不要被你记住

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 import pandas as pd
2 s=pd.Series(list(\'abca\'))
3 
4 s_1=pd.get_dummies(s)

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

变成

2、去除第一列

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

得到:

 

3、查看dummy_na功能

创建数据

1 import numpy as np
2 s_2=["a","b",np.nan]

结果为:

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

结果为:

 

 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"])      

 结果为:

 变为→

 

 

 实例:

 1 import pandas
 2 
 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 in dummyColumns:
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)

 

 构造虚拟变量

drop_first后

 

实例

步骤:

  •  导入数据,设置虚拟变量,将虚拟变量转变为category类,(category变量)类别变量转换成新增的虚拟变量/指示变量
  • 通过pandas自带的get_dummies功能,将所有分类扁平化扩张以增加列的形式实现,离散数据按照[0,1]分布。

  知识点:

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

 1 import pandas;
 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 in dummyColumns:
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=True
26 )
1 #伯努利贝叶斯
2 from sklearn.naive_bayes import BernoulliNB
3 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 in dummyColumns:
 8     newData[column] = newData[column].astype(
 9         \'category\', 
10         categories=data[column].cat.categories
11     )
12 
13 dummiesNewData = pandas.get_dummies(
14     newData, 
15     columns=dummyColumns,
16     prefix=dummyColumns,
17     prefix_sep=" ",
18     drop_first=True
19 )
20 
21 pData = dummiesNewData[fNames]
22 BNBModel.predict(pData)

 

训练:

 1 #病症是打喷嚏的建筑工人
 2 newData=pandas.DataFrame({
 3         \'症状\':[\'打喷嚏\'],
 4         \'职业\':[\'建筑工人\']})
 5 
 6 for column in dummyColumns:
 7     newData[column]=newData[column].astype(
 8         \'category\', 
 9         categories=data[column].cat.categories
10 )
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数据挖掘—回归—贝叶斯分类的主要内容,如果未能解决你的问题,请参考以下文章

Python对中国电信消费者特征预测:随机森林朴素贝叶斯神经网络最近邻分类逻辑回归支持向量回归(SVR)

高斯贝叶斯分类器与逻辑回归的概率分类

朴素贝叶斯算法从入门到Python实践

贝叶斯岭回归(BayesianRidge)自动关联决策回归高斯过程核函数及高斯回归高斯过程分类

阿旭机器学习实战33中文文本分类之情感分析--朴素贝叶斯KNN逻辑回归

回归的朴素贝叶斯