我应该在代码中添加什么或者代码有什么问题?

问题描述 投票:0回答:1
import pandas as pd
import numpy as np
from sklearn.impute import SimpleImputer
from sklearn.preprocessing import MinMaxScaler
from sklearn.neighbors import KNeighborsClassifier


egitim_data = pd.read_excel(r'C:\Users\memo3\OneDrive\Masaüstü\Min-MaxNormalizasyonluEgitimDatalari.xlsx')

X_train = egitim_data.drop('Label', axis=1)
y_train = egitim_data['Label']


test_data = pd.read_excel(r'C:\Users\memo3\OneDrive\Masaüstü\Min-MaxNormalizasyonluTestDatalari.xlsx')

X_test = test_data.drop('Label', axis=1)
y_test = test_data['Label']


scaler = MinMaxScaler()
X_train_normalized = scaler.fit_transform(X_train)
X_test_normalized = scaler.transform(X_test)


imputer = SimpleImputer(missing_values=np.nan, strategy='mean')
X_train_imputed = imputer.fit_transform(X_train_normalized)
X_test_imputed = imputer.transform(X_test_normalized)

knn = KNeighborsClassifier(n_neighbors=5)
knn.fit(X_train_imputed, y_train)

accuracy = knn.score(X_test_imputed, y_test)
print("Model accuracy:", accuracy)

C:\Users\memo3\PycharmProjects\KNNModel\.venv\Scripts\python.exe C:\Users\memo3\PycharmProjects\KNNModel\main.py 
Model accuracy: 0.4527777777777778

Process finished with exit code 0

我正在尝试在 PyCharm 中使用 Python 语言编写机器学习代码。但我认为该代码并未采用我拥有的 Excel 数据中的所有类特征(Excel 中有 15 列表示数据的特征),当我运行代码时,我得到的准确度分数较低,如下所示。我想要分类的目标列是“标签”列,但是它不需要使用数据的所有属性来做到这一点吗?我应该在代码中添加什么或者代码中错误的地方在哪里?

python machine-learning pycharm coding-style knn
1个回答
0
投票

我会首先检查训练数据的准确性。如果很高,那么你就过度拟合了,你可以尝试增加

n_neighbors
KNeighborsClassifier
参数的值。如果这个值也很低,那么也许你的问题不太适合 KNN,至少在默认的距离选择和你应用的缩放情况下是这样。

默认情况下,KNN 使用观测值之间的欧几里德距离。这对你来说有意义吗?如果是这样,您应该意识到缩放(如 MinMaxScaling)会更改这些距离。因此,可能值得在不进行缩放的情况下检查准确性(可能您需要了解数据并使用这些知识来缩放坐标以使 KNN 正常工作)。

首先尝试一些基本的线性基线也是一个好主意,它们对坐标缩放不敏感。例如,检查

sklearn.linear_model.LogisticRegression
的准确性(与它的名字所暗示的不同,它是一个分类器)。

© www.soinside.com 2019 - 2024. All rights reserved.