相关文章推荐
小眼睛的椅子  ·  html - Why is my ...·  1 年前    · 

三. 数据集类别和特征的选取

观察上图数据集,有日期、犯罪种类、描述、星期几、解决方案、地址及XY坐标等多列。我们将“犯罪类别”设置为类别,同时这里不将“罪行描述”、“X/Y坐标”、“结果”作为其特征。

四. 选择合适的朴素贝叶斯模型

sklearn提供了三种朴素贝叶斯模型,选择一个最适合的作为旧金山的犯罪预测。

模型名称 数据分布 特征特点
GaussianNB(高斯朴素贝叶斯模型) 连续式数据 特征的数据连续
BernoulliNB(伯努利朴素贝叶斯模型) 离散式数据 所有特征必须0或1,表示出现或不出现
MultinomialNB(多项式朴素贝叶斯模型) 离散式数据 适用于文本分类,计算某些词出现的频率

(1)高斯朴素贝叶斯模型适合连续数据,因为样本各特征都是离散特征所以不适合用此模型。

(2)伯努利朴素贝叶斯模型和多项式朴素贝叶斯模型都适合离散式数据,因为旧金山犯罪是个典型的伯努利分布,所以选择伯努利朴素贝叶斯模型。

五. 处理训练集数据的类别和特征

1.处理类别:调用sklearn的preprocessing库,使用LabelEncoder对犯罪类型编码。

le = preprocessing.LabelEncoder()
crime_type_encode = le.fit_transform(train_df['Category'])

2. 处理特征:将小时,星期几,所属警区的特征使用pandas库的get_dummies()功能因子化,得到哑变量(dummy_variable)。

哑变量:将不能定量处理的变量量化,构造只取“0”或“1”的人工变量,适合伯努利朴素贝叶斯模型。

例如将下图天气情况转换成哑变量:

hour = pd.to_datetime(train_df['Dates']).dt.hour   # 从Dates列中抽取小时时间
# 将小时(0-24),星期(周一-周日) ,所属警区的特征使用pandas库的get_dummies()功能因子化,得到哑变量(dummy_variable)
hour = pd.get_dummies(hour)
day = pd.get_dummies(train_df['DayOfWeek'])
police_district = pd.get_dummies(train_df['PdDistrict'])

将三个特征功能因子化后如下:

(1)日期:

(2)警区:

(3)时间:

六. 合并训练集数据的特征

train_set = pd.concat([hour, day, police_district], axis = 1)  # 将特征组合成一个DataFrame

合并完如下:

七. 将类别合并到数据集中

train_set['Crime type'] = crime_type_encode  # 向特征组成的DataFrame添加新的一列类别

合并完如下:

八. 数据集的划分

1. 从训练数据集中分割出训练数据和测试数据

from sklearn.model_selection import train_test_split
X = train_set.loc[:, train_set.columns != 'Crime type']
y = train_set['Crime type']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=1)

数据集的划分如下:

2. 创建训练模型,将X_train,y_train放入模型

from sklearn.naive_bayes import BernoulliNB
model = BernoulliNB()
model.fit(X_train, y_train)

3. 将X_test放入刚刚生成的模型进行预测

y_pred = model.predict(X_test)

4. 将预测值与实际值进行比对,输出精确度的值

print("model accuracy:", metrics.accuracy_score(y_test, y_pred))
model accuracy: 0.22405051181479002

最终预测值为22%左右。结果表明:在旧金山,任何一天,任何一小时,任何一片警区,我们知道它会发生39种犯罪类型的哪一种的准确率在22%左右。

在1934到1963年间, 旧金山 因为它的高 犯罪 率而臭名昭著 我们这个项目的数据集包括了近12年的在 旧金山 发生的 犯罪 报告,给定了具体的时间和位置,我们的目标是 预测 出具体的 犯罪 种类。 二 数据概览 这个数据集中数据的特征并不多,但是样本量有一点大。特征有以下这些: Dates - 案发的具体时间 Category- 案件的种类,也是我们要去 预测 的 Descript-案件描述(仅在训练集中有) DayOfWeek- 星期几 PdDistrict- 属于哪个片区管辖 这里我参照的是http://blog.csdn.net/longxinchen_ml/article/details/50629613 这篇博客。import pandas as pd import numpy as np ###############读入数据################# #用pandas载入csv训练数据,并解析第一列为日期格式 train=pd.read_csv('F 贝叶斯分类之 旧金山 犯罪 类型分类 预测 学习七月算法 朴素贝叶斯 分类器中项目的一个例子,这也是一个Kaggle比赛的例子。通过训练来 预测 犯罪 类型。环境: win7 64位 python3.51、加载数据该数据是 旧金山 12年的 犯罪 记录,数据文件是一个csv文件可以使用pandas来加载数据,数据内容摘录: Dates,Category,Descript,DayOfWeek,PdDistrict,Resolu 贝叶斯是经典的 机器学习 算法, 朴素贝叶斯 经常运用于 机器学习 案例 。比如说 文本分类/垃圾邮件的分类/情感分析:在文本分类中,贝斯依旧占有一席之地,因为文本数据中,分布独立这个假设基本上成立的。 推荐系统: 朴素贝叶斯 和协同过滤一起使用,经常... import pandas as pd from sklearn.preprocessing import LabelEncoder from sklearn.naive_bayes import BernoulliNB from sklearn.model_selection import train_test_split from sklearn.metrics import accuracy_score from sklearn.metric 概念什么的,就不多说了!就两个例题谈谈自己的想法。 当然千忘万忘,贝叶斯公式不能忘:P(A|B)=P(AB)/P(A) 还有全概率公式:P(A)=P(A|B1)P(B1) + P(A|B2)P(B2) + … + P(A|Bn)P(Bn)。 网上先找到一道例题。 这道例题只要百度搜索一下贝叶斯决策经典例题,百度文库里面就有。 图片里最后几个字是“专...