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


    KNN算法的实现

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

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

    数据的获取

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

    直接读取

    print('(1) load texts...')
    train_texts = open('../dataset_train/x_train.txt', encoding='utf-8').read().split(' ')
    train_labels = open('../dataset_train/y_train.txt', encoding='utf-8').read().split(' ')
    test_texts = open('../dataset_test/x_test.txt', encoding='utf-8').read().split(' ')
    test_labels = open('../dataset_test/y_test.txt', encoding='utf-8').read().split(' ')
    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)))
  • 相关阅读:
    一种flink 作业提交失败的情况描述与原因排查
    Linux中对管道命令中的任意子命令进行返回码校验
    优化算法与特征缩放
    优化算法
    mvn-dependencies-vs-dependencyManagement
    Caused by java.lang.Exception Failed to send data to Kafka Expiring
    学习ArrayList的扩容机制
    SpringBoot多数据源配置
    idea内存不足或过大闪退
    利用csv文件批量编辑更新sql
  • 原文地址:https://www.cnblogs.com/huangmouren233/p/14759987.html
Copyright © 2020-2023  润新知