优化代码df = df.iloc[:,:7].copy() for col_name in df.columns: # 取列名for col_name in X_copy.columns: col_data = df[[col_name]] # 根据列名拿列数据,两个方括号是因为要二维数组 stand_data = StandardScaler().fit_transform(col_data.values) # 标准化 df[col_name] = stand_data # 将数据替换成标准化后的数据 return X_copy def run_classifier(): # 将数据集分为训练集和测试集 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=test, random_state=random) # 训练分类器 knn.fit(X_train, y_train) # 在训练集上计算分类器的准确率 score = knn.score(X_train, y_train) # 更新结果标签的文本 result_label5.config(text="训练集分类器的准确率为:{:.2f}".format(score))
时间: 2024-03-10 15:49:45 浏览: 163
这段代码中进行了一些优化,将标准化处理的部分提取出来作为一个单独的函数,并将其返回值赋给X_copy。另外,X_copy是通过df.iloc[:,:7].copy()得到的,因此不再需要在for循环中遍历X_copy.columns。最后,将优化后的X_copy作为训练集和测试集进行划分。整个优化后的代码如下:
```
def standardize_data(df):
df = df.iloc[:,:7].copy()
for col_name in df.columns:
col_data = df[[col_name]]
stand_data = StandardScaler().fit_transform(col_data.values)
df[col_name] = stand_data
return df
def run_classifier():
# 对数据进行标准化处理
X_copy = standardize_data(X)
# 将数据集分为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X_copy, y, test_size=test, random_state=random)
# 训练分类器
knn.fit(X_train, y_train)
# 在训练集上计算分类器的准确率
score = knn.score(X_train, y_train)
# 更新结果标签的文本
result_label5.config(text="训练集分类器的准确率为:{:.2f}".format(score))
```
这样做的好处是代码更加清晰,易于理解和维护。
阅读全文