#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
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)