• 分类分析模型


    目录

    1.目的

    2.内容

    2.1决策树分类模型

    2.2K近邻分类模型

    3.代码实现

    3.1分类分析模型

    3.2K近邻分类模型


    1.目的

    1. 掌握利用Python语言及相关库编写决策树分类分析模型的方法,所构建的决策树能够对给定的数据集进行分类。
    2. 掌握利用Python语言及相关库编写K近邻分类分析模型的方法。
    3. 将分类结果与决策树的分类结果和构造算法过程进行比较。

    2.内容

    2.1决策树分类模型

    1.数据集介绍

    2.2K近邻分类模型

    1.数据集介绍

    我们通过构建一个KNN分类器,实现对鸢尾花数据集进行分类。

    3.代码实现

    3.1分类分析模型

    1.数据集介绍

    1. import csv
    2. #定义数据
    3. data = [
    4. ['RID', 'age', 'income', 'student', 'credit_rating', 'class_buys_computer'],
    5. ['1', 'youth', 'high', 'no', 'fair', 'no'],
    6. ['2', 'youth', 'high', 'no', 'excellent', 'no'],
    7. ['3', 'middle_aged', 'high', 'no', 'fair', 'yes'],
    8. ['4', 'senior', 'medium', 'no', 'fair', 'yes'],
    9. ['5', 'senior', 'low', 'yes', 'fair', 'yes'],
    10. ['6', 'senior', 'low', 'yes', 'excellent', 'no'],
    11. ['7', 'middle_aged', 'low', 'yes', 'excellent', 'yes'],
    12. ['8', 'youth', 'medium', 'no', 'fair', 'no'],
    13. ['9', 'youth', 'low', 'yes', 'fair', 'yes'],
    14. ['10', 'senior', 'medium', 'yes', 'fair', 'yes'],
    15. ['11', 'youth', 'medium', 'yes', 'excellent', 'yes'],
    16. ['12', 'middle_aged', 'medium', 'no', 'excellent', 'yes'],
    17. ['13', 'middle_aged', 'high', 'yes', 'fair', 'yes'],
    18. ['14', 'senior', 'medium', 'no', 'excellent', 'no'],
    19. ]
    20. #打开文件以写入数据,使用'newline=''来避免额外的空行
    21. with open('AllElectronics.csv', 'w', newline='') as csvfile:
    22. writer = csv.writer(csvfile)
    23. for row in data:
    24. writer.writerow(row)

    2.代码实现

    (1)导入库

    1. from graphviz import Source
    2. import pandas as pd
    3. from sklearn import tree
    4. from sklearn.feature_extraction import DictVectorizer
    5. from sklearn import preprocessing

    (2)读取数据并进行相应的处理

    1. data = pd.read_csv('AllElectronics.csv')
    2. data = pd.DataFrame(data)
    3. valuedata = data.values
    4. header = list(data.columns)[1:6]
    5. featureList = []
    6. labelList = data['class_buys_computer']
    7. for value in valuedata:
    8. featureDict = {}
    9. for i in range(4):
    10. featureDict[header[i]]=value[i+1]
    11. featureList.append(featureDict)

    (3)建立决策树

    1. vec = DictVectorizer()
    2. dummyX = vec.fit_transform(featureList).toarray()
    3. lb = preprocessing.LabelBinarizer()
    4. dummyY = lb.fit_transform(labelList)
    5. clf = tree.DecisionTreeClassifier(criterion='entropy')
    6. vec.get_feature_names()
    7. print(vec.get_feature_names());

    (4)生成决策树图形

    1. clf = clf.fit(dummyX, dummyY)
    2. print(clf)
    3. graph = Source(tree.export_graphviz(clf, feature_names=vec.get_feature_names(),
    4. out_file=None))
    5. print(graph)
    3.2K近邻分类模型

    1.数据集介绍

    2.代码实现

    (1)导入库

    (2)加载数据

    1. import numpy as up
    2. import pandas as pd
    3. dataset = pd.read_csv('E:\大数据挖掘/Iris.csv')
    4. dataset.shape
    5. print(dataset)

    (3)数据预处理

    (4)数据集切分:训练集和测试集

    1. dataset.describe()
    2. dataset.groupby('Species').size()
    3. feature_columns = ['SepalLengthCm',
    4. 'SepalWidthCm',
    5. 'PetalLengthCm',
    6. 'PetalWidthCm']
    7. X = dataset[feature_columns].values
    8. y = dataset['Species'].values
    9. le = LabelEncoder()
    10. y = le.fit_transform(y)
    11. X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
    12. plt.figure(figsize=(10,6))

    (5)数据可视化探索

    1. import numpy as np
    2. import pandas as pd
    3. from sklearn.preprocessing import LabelEncoder
    4. from sklearn.model_selection import train_test_split
    5. import matplotlib.pylab as plt
    6. import seaborn as sns
    7. from pandas.plotting import parallel_coordinates
    8. import matplotlib.pyplot as plt
    9. dataset = pd.read_csv('E:\大数据挖掘/iris.csv')
    10. dataset.shape
    11. dataset.describe()
    12. dataset.groupby('Species').size()
    13. feature_columns = ['SepalLengthCm',
    14. 'SepalWidthCm',
    15. 'PetalLengthCm',
    16. 'PetalWidthCm']
    17. X = dataset[feature_columns].values
    18. y = dataset['Species'].values
    19. le = LabelEncoder()
    20. y = le.fit_transform(y)
    21. X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
    22. plt.figure(figsize=(10,6))
    23. parallel_coordinates(frame=dataset, class_column="Species")
    24. plt.title('Parallel Coordinates Plot', fontsize=15, fontweight='bold')
    25. plt.xlabel('Features', fontsize=10)
    26. plt.ylabel('Features values', fontsize=10)
    27. plt.legend(loc=1, prop={'size': 10}, frameon=True, shadow=True, facecolor='white', edgecolor='black')
    28. plt.show()

    (6)实现KNN分类模型

    1. from sklearn.neighbors import KNeighborsClassifier
    2. from sklearn.metrics import confusion_matrix,accuracy_score
    3. from sklearn.model_selection import cross_val_score
    4. classifier = KNeighborsClassifier(n_neighbors=3)
    5. classifier.fit(X_train, y_train)
    6. y_pred = classifier.predict(X_test)
    7. cm = confusion_matrix(y_test, y_pred)
    8. cm
    9. print(cm)
    10. accuracy=accuracy_score(y_test, y_pred)*100
    11. print('模型准确率为:'+str(round(accuracy, 2))+'%.')

    (7)使用交叉验证进行参数优化

    1. k_list=list=(range(1,50,2))#三个参数代表range;开始,结束,步长
    2. cv_scores=[]
    3. for k in k_list:
    4. knn=KNeighborsClassifier(n_neighbors=k)
    5. scores=cross_val_score(knn, X_train, y_train, cv=10, scoring='accuracy')
    6. cv_scores.append(scores.mean())

    (8)可视化结果

    (9)得出最优值

    1. MSE=[1-x for x in cv_scores]
    2. plt.figure()
    3. plt.figure(figsize=(10, 6))
    4. plt.title('the optimal number of neighbors', fontsize=15, fontweght='bold')
    5. plt.xlabel('Number of neighbors K', fontsize=10)
    6. sns.set_style("whitegrid")
    7. plt.plot(k_list, MSE)
    8. plt.sho
    9. best_k=k_list[MSE.index(min(MSE))]
    10. print("最优近邻数K为:%d"%best_k)

  • 相关阅读:
    uni.getLocation() 微信小程序 线上获取失败
    TCP、UDP 协议的区别,各自的应用场景
    三次阿里面试总结,恶补(Java+并发+JVM+网络+数据库+算法)第三次终于拿到阿里offer了!
    使用 Apache Commons Exec 管理外部进程
    网工内推 | 国企专场,网络运维工程师,华为/思科认证优先
    2022.11.11 英语背诵
    【LeetCode刷题】146. LRU 缓存
    【实战项目】高并发内存池(下)
    iview实现table里面每行数据的跳转
    Python + re + scrapy.Selector: 分析提取某在线征信站体系内容(一)
  • 原文地址:https://blog.csdn.net/2301_79719531/article/details/137978223