Thuật toán KNN trong Python

Mình có cái đoạn code sau:
1/ Đoạn đầu tiên tách từ 1 file json thành các file text nhỏ để làm thành tập train và test. Mỗi file text gồm “tiêu đề” và “nội dung”

from __future__ import print_function  
import json   
# Remember to check the path to articles.json relative to this file before executing # 
articleType = []
with open('articles.json', mode="r", encoding="utf-8") as json_data:  
    # Load JSON  
    articles = json.load(json_data)  
    print(len(articles), "Articles loaded succesfully")  
    # Loop through every article in the json file
    index = 0
    num = 0
    for article in articles:
        if num == 1000:
            index = 0
        if num < 1000:
            path = "./training/{0}.txt".format(index)
        else:
            path = "./testing/{0}.txt".format(index)

        file = open(path, "w+", encoding = "utf-8") 
        file.write(article["title"] + "\n")
        file.write(article["content"])
        articleType.append(article["type"])
        file.close()
            
        index = index + 1
        num = num + 1

2/ Đoạn 2 chuyển type của của các văn bản từ dạng chữ về dạng số để train

import numpy as np

#Convert string list to int list
articleType = np.array(articleType)
decode = np.unique(articleType)
typeInNum = []
for i in range(len(articleType)):
    for j in range(len(decode)):
        if articleType[i] == decode[j]:
            typeInNum.append(j)
                
#Split into Y train and Y test            
Y = typeInNum[0:1000:1]
Y_expect = typeInNum[1000::1]

3/ Đoạn 3 tính độ chính xác của thuật toán bị lỗi ở hàng “#14” với lỗi “query data dimension must match training data dimension”. Mong các bác giúp em!

from sklearn.feature_extraction.text import TfidfVectorizer 
from sklearn.neighbors import KNeighborsClassifier 
from sklearn.metrics import accuracy_score

fileTrain = ["./training/{0}.txt".format(i) for i in range(1000)]
fileTest = ["./testing/{0}.txt".format(i) for i in range(103)]

for n_neighbors in range(1,2):    
    X = TfidfVectorizer(input="filename").fit_transform(fileTrain).toarray()
    neigh = KNeighborsClassifier(n_neighbors) 
    neigh.fit(X, Y)  
    new_X = TfidfVectorizer(input="filename").fit_transform(fileTest).toarray()
    
    Y_pre = neigh.predict(new_X) #14
    accuracy = neigh.score(Y_pre, Y)

Mình đang muốn blame bạn này giải quyết xong rồi bỏ đi là không được.

2 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?