ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

团队项目冲刺第五天 KNN算法的实现

2021-05-24 23:34:15  阅读:224  来源: 互联网

标签:KNN count fit 冲刺 texts train test 第五天 counts


KNN算法的实现

在数据集准备完成之后 开始进行算法的实现

其中本次项目分为3个部分

数据的获取

其中数据已经保存到了txt文件

直接读取

print('(1) load texts...')
train_texts = open('../dataset_train/x_train.txt', encoding='utf-8').read().split('\n')
train_labels = open('../dataset_train/y_train.txt', encoding='utf-8').read().split('\n')
test_texts = open('../dataset_test/x_test.txt', encoding='utf-8').read().split('\n')
test_labels = open('../dataset_test/y_test.txt', encoding='utf-8').read().split('\n')
all_text = train_texts + test_texts

特征值抽取

特征值的抽取

使用的是词袋和TifIdf算法

其中有一点注意就是对于词袋 词语特征的提取是从总文档的词语中抽取

然后对测试集和训练集分别进行特征抽取

然后得到两个矩阵

然后进行Tfidf算法


count_v0 = CountVectorizer();
counts_all = count_v0.fit_transform(all_text);
count_v1 = CountVectorizer(vocabulary=count_v0.vocabulary_);
counts_train = count_v1.fit_transform(train_texts);
print("the shape of train is " + repr(counts_train.shape))
count_v2 = CountVectorizer(vocabulary=count_v0.vocabulary_);
counts_test = count_v2.fit_transform(test_texts);
print("the shape of test is " + repr(counts_test.shape))

tfidftransformer = TfidfTransformer();
train_data = tfidftransformer.fit(counts_train).transform(counts_train);
test_data = tfidftransformer.fit(counts_test).transform(counts_test);

x_train = train_data
y_train = train_labels
x_test = test_data
y_test = test_labels

KNN算法实现

在特征值抽取之后

利用KNN算法建模

使用训练集进行建模

然后使用测试集进行模型的套用

然后的到结果

然后进行结果的比对

然后得到正确率

# KNN算法建模
for x in range(1, 15):
knnclf = KNeighborsClassifier(n_neighbors=x)
knnclf.fit(x_train, y_train)
preds = knnclf.predict(x_test);
num = 0
preds = preds.tolist()
for i, pred in enumerate(preds):
if int(pred) == int(y_test[i]):
num += 1
print('K= ' + str(x) + ', precision_score:' + str(float(num) / len(preds)))

标签:KNN,count,fit,冲刺,texts,train,test,第五天,counts
来源: https://www.cnblogs.com/laopodoudui/p/14806778.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有