栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

第四章 朴素贝叶斯-Kaggle比赛之“旧金山犯罪分类预测“

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

第四章 朴素贝叶斯-Kaggle比赛之“旧金山犯罪分类预测“

#Kaggle比赛之"旧金山犯罪分类预测"
#导入相应的包
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.metrics import log_loss

pd.set_option('display.max_columns', None) # 设置显示最大列,None为显示所有列

#----------------------------2、导入数据集--------------------------
train=pd.read_csv('../MLinAction_source/Kaggle/train.csv',parse_dates=['Dates'])
test=pd.read_csv('../MLinAction_source/Kaggle/test.csv',parse_dates=['Dates'],index_col=0)
#数据集中每一列的含义
'''
    Date:日期
    Category:犯罪类型(标签)
    Descript:对犯罪更详细的描述
    DayOfWeek:星期几
    PdDistrict:所属警区
    Resolution:处理结果
    Address:发生街区位置
    X and Y:GPS坐标
'''
#----------------------------3、特征预处理--------------------------
#sklearn.preprocessing模块中LabelEncoder函数可以对类别做编号
#对犯罪类别:Category;用LabelEncoder进行编号
leCrime=LabelEncoder()
crime=leCrime.fit_transform(train.Category) #39种犯罪类型  把犯罪类型变成数字 1-39
# print('--处理后的crime字段--:n',crime)

#用get_dummies因子化星期几、街区、小时等特征
days=pd.get_dummies(train.DayOfWeek)  #所在星期几就为1  其他为0
# print('--处理后的DayOfWeek--:n',days.head())
district=pd.get_dummies(train.PdDistrict) #所属警区就为1  其他为0
# print('--处理后的PdDistrict--:n',district.head())
hour=train.Dates.dt.hour
hour=pd.get_dummies(hour) #所属小时就为1  其他为0
# print('--处理后的hour--:n',hour.head())

#组合特征形成训练集
trainData=pd.concat([hour,days,district],axis=1) #将特征将进行左右拼接  axis=0为上下拼接
trainData['cirme']=crime #追加标签列
# print('--处理后的trainData--:n',trainData.head())

#得到测试集
days=pd.get_dummies(test.DayOfWeek)
district=pd.get_dummies(test.PdDistrict)
hour=test.Dates.dt.hour
hour=pd.get_dummies(hour)
testData=pd.concat([hour,days,district],axis=1)
# print('--处理后的trainData--:n',testData.head())

#----------------------------4、切分训练集并建模--------------------------
#切分数据集
X_train,X_test,y_train,y_test=train_test_split(trainData.iloc[:,:-1], #不包含最后一列
                                               trainData.iloc[:,-1], #只要最后一列-->标签
                                               test_size=0.2)

#----------------------------5、训练模型--------------------------
BNB=BernoulliNB()
BNB.fit(X_train,y_train)

#----------------------------6、计算损失函数--------------------------
propa=BNB.predict_proba(X_test)
logLoss=log_loss(y_test,propa)
print("损失:",logLoss)

#----------------------------7、使用模型预测testData--------------------------
print(BNB.predict(testData))

旧金山犯罪分类数据集:
链接
提取码:1gh8

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/688800.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号