机器学习常用数据集鸢尾花数据集的使用举例子,同时对数据集进行相应的介绍。
鸢尾花数据集(部分),共计150条记录,包含 setosa,versicolor,virginica 三种花型。
示例代码如下:
# coding: utf-8
from sklearn.neighbors import KNeighborsClassifier
from sklearn.naive_bayes import GaussianNB
from sklearn.linear_model import LogisticRegression
from sklearn.svm import SVC
from sklearn.tree import DecisionTreeClassifier
from sklearn.ensemble import RandomForestClassifier
from sklearn.neural_network import MLPClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import classification_report
from sklearn.datasets import load_iris
import argparse
# 根据参数选择模型
ap = argparse.ArgumentParser()
ap.add_argument("-m", "--model", type=str, default="knn", help="请输入模型简称")
args = vars(ap.parse_args())
models = {
"knn": KNeighborsClassifier(n_neighbors=1),
"naive_bayes": GaussianNB(),
"logit": LogisticRegression(solver="lbfgs", multi_class="auto"),
"svm": SVC(kernel="rbf", gamma="auto"),
"decision_tree": DecisionTreeClassifier(),
"random_forest": RandomForestClassifier(n_estimators=100),
"mlp": MLPClassifier()
}
# 载入鸢尾花数据集,然后进行训练集和测试集的划分,75%数据作为训练集,其余25%作为测试集
# random_state是随机状态,类似随机种子
print("载入鸢尾花数据集...")
dataset = load_iris()
(trainX, testX, trainY, testY) = train_test_split(dataset.data, dataset.target, random_state=3, test_size=0.25)
# 训练模型
print("正在使用模型:'{}'".format(args["model"]))
model = models[args["model"]]
model.fit(trainX, trainY)
# 预测并输出一份分类结果报告
print("生成结果报告")
predictions = model.predict(testX)
print(classification_report(testY, predictions, target_names=dataset.target_names))
该回答通过自己思路及引用到Chatgpt、baidu搜索,得到内容具体如下:
鸢尾花数据集(Iris dataset)是机器学习中最经典的数据集之一,它由英国统计学家和生物学家 Ronald Fisher 在 1936 年收集整理而成。该数据集包含了 150 条记录,每条记录包含了鸢尾花的四个特征(花萼长度、花萼宽度、花瓣长度、花瓣宽度)以及对应的品种(山鸢尾、变色鸢尾、维吉尼亚鸢尾)。
在 Python 中,我们可以使用 scikit-learn 库来加载和使用鸢尾花数据集。以下是一个使用鸢尾花数据集进行分类的示例代码:
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import accuracy_score
# 加载鸢尾花数据集
iris = load_iris()
# 划分数据集
X_train, X_test, y_train, y_test = train_test_split(iris.data, iris.target, test_size=0.2)
# 定义 KNN 分类器
knn = KNeighborsClassifier(n_neighbors=3)
# 训练模型
knn.fit(X_train, y_train)
# 在测试集上评估模型
y_pred = knn.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)
print("Accuracy:", accuracy)
上述代码首先使用 load_iris()
函数加载鸢尾花数据集,然后使用 train_test_split()
函数将数据集划分为训练集和测试集。接着,我们使用 KNN 分类器来训练模型,并在测试集上评估模型的准确率。
需要注意的是,鸢尾花数据集是一个比较简单的数据集,用于演示机器学习算法的基本应用和原理。在实际应用中,我们可能需要处理更加复杂的数据集,并使用更加高级的机器学习算法来解决实际问题。
希望这个示例能够帮到您!
如果以上回答对您有所帮助,点击一下采纳该答案~谢谢
搜索最优参数的原理是,通过对参数的遍历,如K近邻的n_neighbors参数选择一个范围,在这个范围内进行交叉验证,最后得出每个值对应的模型评测结果均值,最高的参数即可作为最优参数。
import matplotlib.pyplot as plt
def search_param(type):
'''搜索最优参数,type为1使用原始数据,其他为使用扩充特征后的数据'''
k_range = range(1,31)
k_scores = []
for k in k_range:
knn = KNeighborsClassifier(n_neighbors=k)
if type == 1:
scores = cross_val_score(knn,iris.data,iris.target,cv=10,scoring='accuracy')
else:
scores = cross_val_score(knn,data_ploy,iris.target,cv=10,scoring='accuracy')
k_scores.append(scores.mean())
return k_range,k_scores
k_range,k_scores = search_param(1)
plt.plot(k_range,k_scores)
plt.title("使用原始数据的最优参数搜索")
plt.xlabel('Value of K for KNN')
plt.ylabel('Cross-Validated Accuracy')
plt.show()
k_range,k_scores = search_param(2)
plt.plot(k_range,k_scores)
plt.title("使用扩充特征数据的最优参数搜索")
plt.xlabel('Value of K for KNN')
plt.ylabel('Cross-Validated Accuracy')
plt.show()