日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

根据名字预测性别——朴树贝叶斯分类器

發布時間:2024/9/27 编程问答 70 豆豆
生活随笔 收集整理的這篇文章主要介紹了 根据名字预测性别——朴树贝叶斯分类器 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?人名和性別數據train.txt;text.txt 下載地址:NLP學習——人名和性別相關對應數據-自然語言處理文檔類資源-CSDN下載

一,首先讀取數據,并對數據進行簡單處理

import pandas as pd from collections import defaultdicttrain = pd.read_csv("D:/train.txt",sep='\s+',names = ['name','sex'],encoding='utf-8') #要先知道文件的編碼方式,否者無法解碼 test = pd.read_csv("D:/test.txt",sep='\s+',names = ['name','sex'],encoding='UTF-8') #以多個空格為分隔符標志##數據處理 ##刪除含有空數據的行,把男替換為1,女替換為0 train.dropna(axis=1) test.dropna(axis=1) test.loc[test['sex']=='男','sex']= 1 test.loc[test['sex']=='女','sex']= 0 train.loc[train['sex']=='男','sex'] = 1 train.loc[train['sex']=='女','sex'] = 0

二,對數據再次進行處理,并計算訓練集中每個字的先驗改概率

#根據性別進行分類 names_female = train[train['sex']== 0] #女性一組 names_male = train[train['sex']== 1] #男性一組 ##釋放內存 del train #計算每個字在男和女中出現的概率 totals = {'f':len(names_female),'m':len(names_male)} #女性總數,男性總數nums_list_f = defaultdict(int) for name in names_female['name']:for ch in name:nums_list_f[ch] += 1.0 / totals['f']nums_list_m = defaultdict(int) for name in names_male['name']:for ch in name:nums_list_m[ch] += 1.0 / totals['m']

?三,訓練集中只含有一部分字,總會有一些人的名字的字在我們的訓練集中沒有出現,當遇見這些名字時,以上的代碼會判為這個人不存在,所以解決這個問題我們可以對數據進行拉普拉斯平滑。

#拉普拉斯平滑 def laplace(char,nums_list,totals,alpha=1): #char:字符;nums_list:字符頻率表;totals:人數count = nums_list[char]*totals #該字符出現的次數charnums = len(nums_list) #字符表中個數smooth = (count+alpha)/(totals+charnums)return smooth

?四,對一個名字進行計算出是男的概率,女的概率各是多少,并返回一個字典

#拉普拉斯平滑后,一個名字是男和女的概率,并返回一個字典 def Prob(name,totals,nums_list_m,nums_list_f):prob_m = 1;prob_f = 1;for ch in name:prob_m*=laplace(ch,nums_list_m,totals['m'])prob_f*=laplace(ch,nums_list_f,totals['f'])prob = {'male':prob_m,'female':prob_f}

五,對prob字典里的數據進行對比,給出結果

##通過概率比對給出結果 def result(prob):if prob['male']>prob['female']:return 1else:return 0

?六,通過測試集對模型的測試得出準確率

i=0 n=0 for nam in test['name']:predict = result(Prob(nam,totals,nums_list_m,nums_list_f))if(predict==test.loc[n,'sex']):i+=1n+=1 accuracy = (i+1)/(n+1)print('準確率為:',accuracy)

完整代碼:

#coding: utf-8 import pandas as pd from collections import defaultdicttrain = pd.read_csv("D:/train.txt",sep='\s+',names = ['name','sex'],encoding='utf-8') #要先知道文件的編碼方式,否者無法解碼 test = pd.read_csv("D:/test.txt",sep='\s+',names = ['name','sex'],encoding='UTF-8') #以多個空格為分隔符標志##數據處理 ##刪除含有空數據的行,把男替換為1,女替換為0 train.dropna(axis=1) test.dropna(axis=1) test.loc[test['sex']=='男','sex']= 1 test.loc[test['sex']=='女','sex']= 0 train.loc[train['sex']=='男','sex'] = 1 train.loc[train['sex']=='女','sex'] = 0#根據性別進行分類 names_female = train[train['sex']== 0] #女性一組 names_male = train[train['sex']== 1] #男性一組 ##釋放內存 del train #計算每個字在男和女中出現的概率 totals = {'f':len(names_female),'m':len(names_male)} #女性總數,男性總數nums_list_f = defaultdict(int) for name in names_female['name']:for ch in name:nums_list_f[ch] += 1.0 / totals['f']nums_list_m = defaultdict(int) for name in names_male['name']:for ch in name:nums_list_m[ch] += 1.0 / totals['m']#拉普拉斯平滑 def laplace(char,nums_list,totals,alpha=1): #char:字符;nums_list:字符頻率表;totals:人數count = nums_list[char]*totals #該字符出現的次數charnums = len(nums_list) #字符表中個數smooth = (count+alpha)/(totals+charnums)return smooth #拉普拉斯平滑后,一個名字是男和女的概率,并返回一個字典 def Prob(name,totals,nums_list_m,nums_list_f):prob_m = 1;prob_f = 1;for ch in name:prob_m*=laplace(ch,nums_list_m,totals['m'])prob_f*=laplace(ch,nums_list_f,totals['f'])prob = {'male':prob_m,'female':prob_f}return prob ##通過概率比對給出結果 def result(prob):if prob['male']>prob['female']:return 1else:return 0##計算準確率 i=0 n=0 for nam in test['name']:predict = result(Prob(nam,totals,nums_list_m,nums_list_f))if(predict==test.loc[n,'sex']):i+=1n+=1 accuracy = (i+1)/(n+1)print('準確率為:',accuracy)while(1):nam = input("請輸入要預測的姓名:")predict = result(Prob(nam,totals,nums_list_m,nums_list_f))if(predict == 1):print("預測結果為:男")if(predict == 0):print("預測結果為:女")

總結

以上是生活随笔為你收集整理的根据名字预测性别——朴树贝叶斯分类器的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 午夜88| 国产精品视频网站 | 香蕉污视频 | 双性皇帝高h喷汁呻吟 | 性生交大片免费看l | 操丝袜美女视频 | 精品国精品国产自在久不卡 | 亚洲福利电影网 | 99在线精品视频免费观看20 | 少妇人妻综合久久中文字幕 | 麻豆91网站| 超黄网站在线观看 | 好吊色视频988gao在线观看 | 国产三级按摩推拿按摩 | av嫩草 | 少妇的被肉日常np | 成人av高清在线观看 | 欧美大片免费观看网址 | 欧美呦呦 | 亚洲av日韩av高潮潮喷无码 | 青娱乐最新地址 | 久久国产剧情 | 国产一区啪啪 | 欧美大黄 | 亚洲熟女乱综合一区二区三区 | 久久久青青 | 欧美 日韩 国产 成人 在线 91 | 欧美一区二区在线播放 | 成人av亚洲 | 亚洲男人的天堂av | 99爱免费视频 | 免费看三级黄色片 | 波多野结衣1区 | 亚洲天天综合 | 精品人妻一区二区三区日产乱码卜 | 中文字幕高清视频 | 色综合久久中文字幕无码 | 成人午夜免费毛片 | 日韩二区在线观看 | 免费在线观看视频 | 日本我不卡 | 国产九九九九九 | 激情一级片| 国产四区 | 亚洲精品高潮 | 奇米影视999 | 丝袜脚交免费网站xx | 国产精品主播视频 | 日韩亚州| а√天堂www在线天堂小说 | 人人射影院 | 浮力影院草草 | 国产高清精品软件丝瓜软件 | 好吊妞一区二区三区 | 大桥未久av在线 | 欧美freesex黑人又粗又大 | 国产噜噜噜 | 免费一级特黄3大片视频 | 国产a级淫片 | 国产精品久久久久久久成人午夜 | 精品福利一区二区三区 | 国产亚洲精品网站 | 亚洲美女毛片 | 国产高清www | 妖精视频一区二区三区 | 久久特黄 | 粉嫩av蜜桃av蜜臀av | 经典毛片 | 日本美女三级 | 日韩一区二区三区不卡 | 中文字幕在线不卡视频 | 超碰在97| 亚洲精品一二三 | 福利精品视频 | 一道本一区二区 | 人操人爽 | 人妻熟女一区二区aⅴ水 | 亚洲色图自拍 | 美女被娇喘流出白 | 国产成人福利视频 | 亚洲品质自拍视频网站 | 精品97人妻无码中文永久在线 | 成人国产在线视频 | 午夜av网站 | av之家在线 | 欧美日韩精品综合 | 日韩一区二区在线免费观看 | 日本在线不卡一区二区 | 国产精品啪啪啪视频 | 亚洲啪啪| 日韩av在线高清 | 91在线国产观看 | 久久久久成人精品 | 澳门免费av | 久久综合中文字幕 | 久久久噜噜噜久久久 | 欧美日韩亚洲视频 | 国产玖玖 | 这里只有精品免费视频 |