莺尾花的分类问题KNN(K-近邻)分类算法代码,python
时间: 2023-07-05 12:18:04 浏览: 70
以下是莺尾花分类问题的KNN分类算法Python代码示例:
```python
from sklearn.datasets import load_iris # 导入莺尾花数据集
from sklearn.model_selection import train_test_split # 划分数据集
from sklearn.neighbors import KNeighborsClassifier # KNN分类器
# 加载莺尾花数据集
iris = load_iris()
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(iris.data, iris.target, test_size=0.3, random_state=42)
# 创建KNN分类器,K值为3
clf = KNeighborsClassifier(n_neighbors=3)
# 训练模型
clf.fit(X_train, y_train)
# 预测测试集的类别
y_pred = clf.predict(X_test)
# 计算模型的准确率
accuracy = clf.score(X_test, y_test)
print("模型的准确率为:{:.2f}%".format(accuracy * 100))
```
在以上代码中,首先导入莺尾花数据集并划分训练集和测试集。然后创建KNN分类器,K值为3,使用训练集来训练模型。接着,使用测试集来预测新莺尾花的类别,并计算模型的准确率。最后输出模型的准确率。
相关问题
DPC-KNN-PCA算法python完整代码
以下是DPC-KNN-PCA算法的Python完整代码,包括数据预处理、DPC-KNN-PCA算法实现和结果可视化:
```python
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
# 数据预处理
data = pd.read_csv('data.csv')
X = data.values[:, :-1]
y = data.values[:, -1]
# DPC-KNN-PCA算法实现
def DPC_KNN_PCA(X, k, alpha, beta, gamma):
n, m = X.shape
D = np.zeros((n, n))
for i in range(n):
for j in range(n):
D[i, j] = np.linalg.norm(X[i] - X[j])
D_sort = np.sort(D, axis=1)
idx_sort = np.argsort(D, axis=1)
K = np.zeros((n, k))
for i in range(n):
for j in range(k):
K[i, j] = idx_sort[i, j+1]
W = np.zeros((n, n))
for i in range(n):
for j in range(k):
W[int(K[i, j]), i] = 1
W = np.maximum(W, W.T)
D_bar = np.diag(np.sum(W, axis=1))
L = D_bar - W
M = np.dot(X.T, L).dot(X)
[U, S, V] = np.linalg.svd(M)
U_pca = U[:, :2]
Z = np.dot(X, U_pca)
L_pca = np.dot(U_pca.T, M).dot(U_pca)
D_pca = np.diag(np.sum(L_pca, axis=1))
L_norm = np.linalg.inv(np.sqrt(D_pca)).dot(L_pca).dot(np.linalg.inv(np.sqrt(D_pca)))
W_norm = np.exp(-alpha*L_norm) - np.eye(n)
D_norm = np.diag(np.sum(W_norm, axis=1))
L1_norm = D_norm - W_norm
L2_norm = np.linalg.inv(np.sqrt(D_norm)).dot(L_norm).dot(np.linalg.inv(np.sqrt(D_norm)))
W_dpc = np.exp(-beta*L1_norm - gamma*L2_norm) - np.eye(n)
D_dpc = np.diag(np.sum(W_dpc, axis=1))
L_dpc = D_dpc - W_dpc
return Z, L_dpc
# 运行DPC-KNN-PCA算法并可视化结果
Z, L_dpc = DPC_KNN_PCA(X, 10, 0.5, 0.1, 0.1)
plt.scatter(Z[:, 0], Z[:, 1], c=y)
plt.show()
```
k-近邻算法的设计与实现python代码
以下是K-近邻算法的Python代码实现:
```python
import numpy as np
from collections import Counter
class KNN:
def __init__(self, k):
self.k = k
def fit(self, X_train, y_train):
self.X_train = X_train
self.y_train = y_train
def predict(self, X_test):
y_pred = []
for x in X_test:
distances = [np.sqrt(np.sum((x - x_train)**2)) for x_train in self.X_train]
nearest_indexes = np.argsort(distances)[:self.k]
nearest_labels = [self.y_train[i] for i in nearest_indexes]
most_common_label = Counter(nearest_labels).most_common(1)[0][0]
y_pred.append(most_common_label)
return y_pred
```
其中,`KNN`类包括以下方法:
- `__init__(self, k)`:初始化方法,传入K值。
- `fit(self, X_train, y_train)`:训练方法,传入训练集特征和标签。
- `predict(self, X_test)`:预测方法,传入测试集特征,返回预测结果。