01/10/2018, 16:35
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"] + "
")
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)
Bài liên quan
Mình đang muốn blame bạn này giải quyết xong rồi bỏ đi là không được.