机器学习-实战-入门-不同语种的识别

作者:橘子派
声明:版权所有,转载请注明出处,谢谢。


实验环境:
Windows10
Sublime
Anaconda 1.6.0
Python3.6

语言识别数据集的基本数据分析方法,包括SVM算法。
#运用sklearn的SVM来训练数据集,测试测试集
from sklearn import svm, metrics
import glob, os.path, re, json

def check_freq(fname):
    name = os.path.basename(fname)
    lang = re.match(r'^[a-z]{2,}', name).group()
    with open(fname, "r", encoding="utf-8") as f:
        text = f.read()
    text = text.lower() 

    cnt = [0 for n in range(0, 26)]
    code_a = ord("a")
    code_z = ord("z")

    for ch in text:
        n = ord(ch)
        if code_a <= n <= code_z:
            cnt[n - code_a] += 1

    total = sum(cnt)
    freq = list(map(lambda n: n / total, cnt))
    return (freq, lang)
    
def load_files(path):
    freqs = []
    labels = []
    file_list = glob.glob(path)
    for fname in file_list:
        r = check_freq(fname)
        freqs.append(r[0])
        labels.append(r[1])
    return {"freqs":freqs, "labels":labels}
    
data = load_files("./data/train/*.txt")
#读取训练集
test = load_files("./data/test/*.txt")
#读取测试集

with open("./data/freq.json", "w", encoding="utf-8") as fp:
    json.dump([data, test], fp)

clf = svm.SVC()
clf.fit(data["freqs"], data["labels"])
#训练数据集

predict = clf.predict(test["freqs"])
#预测测试集

ac_score = metrics.accuracy_score(test["labels"], predict)
#生成测试精度
cl_report = metrics.classification_report(test["labels"], predict)
#生成交叉验证的报告
print(ac_score)
#显示数据精度
print(cl_report)
#显示交叉验证数据集报告

运行结果图

交叉验证三组测试集平均预测精度为0.875

参考文献:
《统计学习方法》
Web scraping and machine learning by python
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值