实训四+ 省市消费聚类和人脸识别

机器学习的基本概念

  • 机器学习分类:监督学习、无监督学习、强化学习、深度学习
  • 监督学习:有指导的学习,数据有结果标记,例如:分类和回归
  • 非监督学习:无指导的学习,数据没有结果标记,例如:聚类
  • 强化学习:模型在应用环境不断学习
  • 深度学习:多层神经网络

省市消费聚类 (聚类:类别的个数要先知道,也就是要先知道有几类。不用提前知道是什么类,不用分训练集和测试集)

# 读取数据
# 1、pandas读取
import pandas as pd
data = pd.read_csv("data/city.txt", header=None, encoding="gbk")#取得省市名称
names = data.iloc[:,0].values
print(cityNames)#取得消费数据
datas = data.iloc[:,1:].values
print(datas)
['北京' '天津' '河北' '山西' '内蒙古' '辽宁' '吉林' '黑龙江' '上海' '江苏' '浙江' '安徽' '福建' '江西''山东' '河南' '湖南' '湖北' '广东' '广西' '海南' '重庆' '四川' '贵州' '云南' '西藏' '陕西' '甘肃''青海' '宁夏' '新疆']
[[2959.19  730.79  749.41  513.34  467.87 1141.82  478.42  457.64][2459.77  495.47  697.33  302.87  284.19  735.97  570.84  305.08][1495.63  515.9   362.37  285.32  272.95  540.58  364.91  188.63][1406.33  477.77  290.15  208.57  201.5   414.72  281.84  212.1 ][1303.97  524.29  254.83  192.17  249.81  463.09  287.87  192.96][1730.84  553.9   246.91  279.81  239.18  445.2   330.24  163.86][1561.86  492.42  200.49  218.36  220.69  459.62  360.48  147.76][1410.11  510.71  211.88  277.11  224.65  376.82  317.61  152.85][3712.31  550.74  893.37  346.93  527.   1034.98  720.33  462.03][2207.58  449.37  572.4   211.92  302.09  585.23  429.77  252.54][2629.16  557.32  689.73  435.69  514.66  795.87  575.76  323.36][1844.78  430.29  271.28  126.33  250.56  513.18  314.    151.39][2709.46  428.11  334.12  160.77  405.14  461.67  535.13  232.29][1563.78  303.65  233.81  107.9   209.7   393.99  509.39  160.12][1675.75  613.32  550.71  219.79  272.59  599.43  371.62  211.84][1427.65  431.79  288.55  208.14  217.    337.76  421.31  165.32][1942.23  512.27  401.39  206.06  321.29  697.22  492.6   226.45][1783.43  511.88  282.84  201.01  237.6   617.74  523.52  182.52][3055.17  353.23  564.56  356.27  811.88  873.06 1082.82  420.81][2033.87  300.82  338.65  157.78  329.06  621.74  587.02  218.27][2057.86  186.44  202.72  171.79  329.65  477.17  312.93  279.19][2303.29  589.99  516.21  236.55  403.92  730.05  438.41  225.8 ][1974.28  507.76  344.79  203.21  240.24  575.1   430.36  223.46][1673.82  437.75  461.61  153.32  254.66  445.59  346.11  191.48][2194.25  537.01  369.07  249.54  290.84  561.91  407.7   330.95][2646.61  839.7   204.44  209.11  379.3   371.04  269.59  389.33][1472.95  390.89  447.95  259.51  230.61  490.9   469.1   191.34][1525.57  472.98  328.9   219.86  206.65  449.69  249.66  228.19][1654.69  437.77  258.78  303.    244.93  479.53  288.56  236.51][1375.46  480.89  273.84  317.32  251.08  424.75  228.73  195.93][1608.82  536.05  432.46  235.82  250.28  541.3   344.85  214.4 ]]
#2、Python读文件的方式
f = open("data/city.txt", "r", encoding="gbk")
lines = f.readlines() #把所有的都读进来,按行读
names = []
datas = []
for line in lines:items = line.strip().split(",")names.append(items[0])datas.append([float(items[i]) for i in range(1, len(items))])
print(names)
print(datas)
['北京', '天津', '河北', '山西', '内蒙古', '辽宁', '吉林', '黑龙江', '上海', '江苏', '浙江', '安徽', '福建', '江西', '山东', '河南', '湖南', '湖北', '广东', '广西', '海南', '重庆', '四川', '贵州', '云南', '西藏', '陕西', '甘肃', '青海', '宁夏', '新疆']
[[2959.19, 730.79, 749.41, 513.34, 467.87, 1141.82, 478.42, 457.64], [2459.77, 495.47, 697.33, 302.87, 284.19, 735.97, 570.84, 305.08], [1495.63, 515.9, 362.37, 285.32, 272.95, 540.58, 364.91, 188.63], [1406.33, 477.77, 290.15, 208.57, 201.5, 414.72, 281.84, 212.1], [1303.97, 524.29, 254.83, 192.17, 249.81, 463.09, 287.87, 192.96], [1730.84, 553.9, 246.91, 279.81, 239.18, 445.2, 330.24, 163.86], [1561.86, 492.42, 200.49, 218.36, 220.69, 459.62, 360.48, 147.76], [1410.11, 510.71, 211.88, 277.11, 224.65, 376.82, 317.61, 152.85], [3712.31, 550.74, 893.37, 346.93, 527.0, 1034.98, 720.33, 462.03], [2207.58, 449.37, 572.4, 211.92, 302.09, 585.23, 429.77, 252.54], [2629.16, 557.32, 689.73, 435.69, 514.66, 795.87, 575.76, 323.36], [1844.78, 430.29, 271.28, 126.33, 250.56, 513.18, 314.0, 151.39], [2709.46, 428.11, 334.12, 160.77, 405.14, 461.67, 535.13, 232.29], [1563.78, 303.65, 233.81, 107.9, 209.7, 393.99, 509.39, 160.12], [1675.75, 613.32, 550.71, 219.79, 272.59, 599.43, 371.62, 211.84], [1427.65, 431.79, 288.55, 208.14, 217.0, 337.76, 421.31, 165.32], [1942.23, 512.27, 401.39, 206.06, 321.29, 697.22, 492.6, 226.45], [1783.43, 511.88, 282.84, 201.01, 237.6, 617.74, 523.52, 182.52], [3055.17, 353.23, 564.56, 356.27, 811.88, 873.06, 1082.82, 420.81], [2033.87, 300.82, 338.65, 157.78, 329.06, 621.74, 587.02, 218.27], [2057.86, 186.44, 202.72, 171.79, 329.65, 477.17, 312.93, 279.19], [2303.29, 589.99, 516.21, 236.55, 403.92, 730.05, 438.41, 225.8], [1974.28, 507.76, 344.79, 203.21, 240.24, 575.1, 430.36, 223.46], [1673.82, 437.75, 461.61, 153.32, 254.66, 445.59, 346.11, 191.48], [2194.25, 537.01, 369.07, 249.54, 290.84, 561.91, 407.7, 330.95], [2646.61, 839.7, 204.44, 209.11, 379.3, 371.04, 269.59, 389.33], [1472.95, 390.89, 447.95, 259.51, 230.61, 490.9, 469.1, 191.34], [1525.57, 472.98, 328.9, 219.86, 206.65, 449.69, 249.66, 228.19], [1654.69, 437.77, 258.78, 303.0, 244.93, 479.53, 288.56, 236.51], [1375.46, 480.89, 273.84, 317.32, 251.08, 424.75, 228.73, 195.93], [1608.82, 536.05, 432.46, 235.82, 250.28, 541.3, 344.85, 214.4]]
# 聚类模型:KMeans算法
# 算法解释
import mglearn
mglearn.plots.plot_kmeans_algorithm() #找出中心点再重新算,反复多次,直到中心点不再改变就结束计算

# 利用Kmeans算法聚类
from sklearn.cluster import KMeans
# 生成学习器
km = KMeans(n_clusters=5)
# 学习
km.fit(datas)
# 预测
labels = km.predict(datas)
print(labels)
[2 1 3 3 3 3 3 3 2 0 1 0 1 3 3 3 0 0 4 0 0 1 0 3 0 1 3 3 3 3 3]
# 结合省市名称查看聚类结果并解释
cityCluster = [[], [], [], [], []]
for i in range(len(names)):cityCluster[labels[i]].append(names[i])
for i in range(len(cityCluster)):print(cityCluster[i])
['江苏', '安徽', '湖南', '湖北', '广西', '海南', '四川', '云南']
['天津', '浙江', '福建', '重庆', '西藏']
['北京', '上海']
['河北', '山西', '内蒙古', '辽宁', '吉林', '黑龙江', '江西', '山东', '河南', '贵州', '陕西', '甘肃', '青海', '宁夏', '新疆']
['广东']
#练习:kaggle手写数字识别(10类)聚类,x1.reshape啥的。导入数据,降维

人脸识别

数据来自于在线获取。 一般数据来源:自己制造,load,fetch

# 在线获取人脸图像数据
from sklearn.datasets import fetch_olivetti_faces
faces = fetch_olivetti_faces() #参数:1,指定网址,2,是否打散
downloading Olivetti faces from https://ndownloader.figshare.com/files/5976027 to C:\Users\User\scikit_learn_data
# 观察数据
print(faces) #40个人,每个人10张照片,总共400张照片
{'data': array([[0.30991736, 0.3677686 , 0.41735536, ..., 0.15289256, 0.16115703,0.1570248 ],[0.45454547, 0.47107437, 0.5123967 , ..., 0.15289256, 0.15289256,0.15289256],[0.3181818 , 0.40082645, 0.49173555, ..., 0.14049587, 0.14876033,0.15289256],...,[0.5       , 0.53305787, 0.607438  , ..., 0.17768595, 0.14876033,0.19008264],[0.21487603, 0.21900827, 0.21900827, ..., 0.57438016, 0.59090906,0.60330576],[0.5165289 , 0.46280992, 0.28099173, ..., 0.35950413, 0.3553719 ,0.38429752]], dtype=float32), 'images': array([[[0.30991736, 0.3677686 , 0.41735536, ..., 0.37190083,0.3305785 , 0.30578512],[0.3429752 , 0.40495867, 0.43801653, ..., 0.37190083,0.338843  , 0.3140496 ],[0.3429752 , 0.41735536, 0.45041323, ..., 0.38016528,0.338843  , 0.29752067],...,[0.21487603, 0.20661157, 0.2231405 , ..., 0.15289256,0.16528925, 0.17355372],[0.20247933, 0.2107438 , 0.2107438 , ..., 0.14876033,0.16115703, 0.16528925],[0.20247933, 0.20661157, 0.20247933, ..., 0.15289256,0.16115703, 0.1570248 ]],[[0.45454547, 0.47107437, 0.5123967 , ..., 0.19008264,0.18595041, 0.18595041],[0.446281  , 0.48347107, 0.5206612 , ..., 0.21487603,0.2107438 , 0.2107438 ],[0.49586776, 0.5165289 , 0.53305787, ..., 0.20247933,0.20661157, 0.20661157],...,[0.77272725, 0.78099173, 0.7933884 , ..., 0.1446281 ,0.1446281 , 0.1446281 ],[0.77272725, 0.7768595 , 0.7892562 , ..., 0.13636364,0.13636364, 0.13636364],[0.7644628 , 0.7892562 , 0.78099173, ..., 0.15289256,0.15289256, 0.15289256]],[[0.3181818 , 0.40082645, 0.49173555, ..., 0.40082645,0.3553719 , 0.30991736],[0.30991736, 0.3966942 , 0.47933885, ..., 0.40495867,0.37603307, 0.30165288],[0.26859504, 0.34710744, 0.45454547, ..., 0.3966942 ,0.37190083, 0.30991736],...,[0.1322314 , 0.09917355, 0.08264463, ..., 0.13636364,0.14876033, 0.15289256],[0.11570248, 0.09504132, 0.0785124 , ..., 0.1446281 ,0.1446281 , 0.1570248 ],[0.11157025, 0.09090909, 0.0785124 , ..., 0.14049587,0.14876033, 0.15289256]],...,[[0.5       , 0.53305787, 0.607438  , ..., 0.28512397,0.23966943, 0.21487603],[0.49173555, 0.5413223 , 0.60330576, ..., 0.29752067,0.20247933, 0.20661157],[0.46694216, 0.55785125, 0.6198347 , ..., 0.29752067,0.17768595, 0.18595041],...,[0.03305785, 0.46280992, 0.5289256 , ..., 0.17355372,0.17355372, 0.1694215 ],[0.1570248 , 0.5247934 , 0.53305787, ..., 0.16528925,0.1570248 , 0.18595041],[0.45454547, 0.5206612 , 0.53305787, ..., 0.17768595,0.14876033, 0.19008264]],[[0.21487603, 0.21900827, 0.21900827, ..., 0.71487606,0.71487606, 0.6942149 ],[0.20247933, 0.20661157, 0.20661157, ..., 0.7107438 ,0.7066116 , 0.6942149 ],[0.2107438 , 0.20661157, 0.20661157, ..., 0.6859504 ,0.69008267, 0.6942149 ],...,[0.2644628 , 0.25619835, 0.2603306 , ..., 0.5413223 ,0.57438016, 0.59090906],[0.26859504, 0.2644628 , 0.26859504, ..., 0.56198347,0.58264464, 0.59504133],[0.27272728, 0.26859504, 0.27272728, ..., 0.57438016,0.59090906, 0.60330576]],[[0.5165289 , 0.46280992, 0.28099173, ..., 0.5785124 ,0.5413223 , 0.60330576],[0.5165289 , 0.45041323, 0.29338843, ..., 0.58264464,0.553719  , 0.5785124 ],[0.5165289 , 0.44214877, 0.29338843, ..., 0.59917355,0.5785124 , 0.54545456],...,[0.39256197, 0.41322315, 0.38842976, ..., 0.33471075,0.37190083, 0.3966942 ],[0.39256197, 0.38429752, 0.40495867, ..., 0.3305785 ,0.35950413, 0.37603307],[0.3677686 , 0.40495867, 0.3966942 , ..., 0.35950413,0.3553719 , 0.38429752]]], dtype=float32), 'target': array([ 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  1,  1,  1,  1,  1,  1,  1,1,  1,  1,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  3,  3,  3,  3,3,  3,  3,  3,  3,  3,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  5,5,  5,  5,  5,  5,  5,  5,  5,  5,  6,  6,  6,  6,  6,  6,  6,  6,6,  6,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  8,  8,  8,  8,  8,8,  8,  8,  8,  8,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9, 10, 10,10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11,11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 13,13, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15,15, 15, 15, 15, 15, 15, 15, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 18, 18, 18, 18, 18, 18, 18,18, 18, 18, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 20, 20, 20, 20,20, 20, 20, 20, 20, 20, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 22,22, 22, 22, 22, 22, 22, 22, 22, 22, 23, 23, 23, 23, 23, 23, 23, 23,23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 25, 25, 25, 25, 25,25, 25, 25, 25, 25, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 27, 27,27, 27, 27, 27, 27, 27, 27, 27, 28, 28, 28, 28, 28, 28, 28, 28, 28,28, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 30, 30, 30, 30, 30, 30,30, 30, 30, 30, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 32, 32, 32,32, 32, 32, 32, 32, 32, 32, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 35, 35, 35, 35, 35, 35, 35,35, 35, 35, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 37, 37, 37, 37,37, 37, 37, 37, 37, 37, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 39,39, 39, 39, 39, 39, 39, 39, 39, 39]), 'DESCR': 'Modified Olivetti faces dataset.\n\nThe original database was available from\n\n    http://www.cl.cam.ac.uk/research/dtg/attarchive/facedatabase.html\n\nThe version retrieved here comes in MATLAB format from the personal\nweb page of Sam Roweis:\n\n    http://www.cs.nyu.edu/~roweis/\n\nThere are ten different images of each of 40 distinct subjects. For some\nsubjects, the images were taken at different times, varying the lighting,\nfacial expressions (open / closed eyes, smiling / not smiling) and facial\ndetails (glasses / no glasses). All the images were taken against a dark\nhomogeneous background with the subjects in an upright, frontal position (with\ntolerance for some side movement).\n\nThe original dataset consisted of 92 x 112, while the Roweis version\nconsists of 64x64 images.\n'}
# 分别获取数据、目标和图像
X, y, images = faces["data"],faces["target"],faces["images"]
print(X.shape, y.shape, images.shape)
(400, 4096) (400,) (400, 64, 64)
# 绘图观察数据
%matplotlib inline
import matplotlib.pyplot as plt
plt.imshow(images[71])

# 显示一堆人脸
import matplotlib.pyplot as plt
plt.style.use("ggplot")
fig = plt.figure(figsize=(12,12))
fig.subplots_adjust(left=0, right=1, bottom=0, top=1, hspace=0.05, wspace=0.05) #对子图之间的设置
#显示100张图片,每行10个,一共10行
for i in range(100):p = fig.add_subplot(10, 10, i+1, xticks=[], yticks=[]) #一种画子图的方式,去掉x轴和y轴的刻度p.imshow(images[i], cmap=plt.cm.bone)p.text(2, 14, str(y[i]), color="red") #在每一张图片的坐标上显示类别和序号p.text(14, 0, str(i), color="blue")
plt.show()

# 机器学习过程
# 划分训练集和测试集
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test =  train_test_split(X, y, test_size=0.3, random_state=0)
# 采用支持向量机算法(依赖参数,有时间用网格搜索看看最佳参数试试)
from sklearn.svm import SVC
svc = SVC(kernel="linear")
svc.fit(X_train, y_train)
print("SVM训练集准确度:", svc.score(X_train, y_train))
print("SVM测试集准确度:", svc.score(X_test, y_test))
SVM训练集准确度: 1.0
SVM测试集准确度: 0.9583333333333334
#采用KNN算法
from sklearn.neighbors import KNeighborsClassifier
knn = KNeighborsClassifier(n_neighbors = 1)
knn.fit(X_train, y_train)
print("SVM训练集准确度:", knn.score(X_train, y_train))
print("SVM测试集准确度:", knn.score(X_test, y_test))
SVM训练集准确度: 1.0
SVM测试集准确度: 0.8833333333333333

上课笔记-机器学习(3)-省市消费聚类和人脸识别相关推荐

  1. 机器学习——SVM(支持向量机)与人脸识别

    目录 系列文章目录 一.SVM的概念与原理 1.SVM简介 2.SVM基本流程 3.SVM在多分类中的推广 二.经典SVM运用于图像识别分类 三.SVM运用于人脸识别 1.预处理 1.1 数据导入与处 ...

  2. 2021-02-02美赛前MATLAB的学习笔记(机器学习(分类、聚类、深度学习))

    机器学习 机器学习是一中工具.方法,通过对机器训练,进而学习到某种规律或者模式,并建立预测未来结果的模型. 机器学习可以分为监督学习和无监督学习 有监督学习方法,是提供答案的,主要包括分类和回归 无监 ...

  3. 人工智障学习笔记——机器学习(8)K均值聚类

    一.概念 K均值聚类(K-means)是硬聚类算法,是典型的基于原型的目标函数聚类方法的代表,它是数据点到原型的某种距离作为优化的目标函数,利用函数求极值的方法得到迭代运算的调整规则.K-means算 ...

  4. python机器学习库keras——CNN卷积神经网络人脸识别

    全栈工程师开发手册 (作者:栾鹏) python教程全解 github地址:https://github.com/626626cdllp/kears/tree/master/Face_Recognit ...

  5. ☀️机器学习实战☀️基于 YOLO网络 的人脸识别 |(文末送机器学习书籍~)

  6. 机器学习——LR(线性回归)、LRC(线性回归分类)与人脸识别

    目录 系列文章目录 一.LR的概念.原理与LR用于简单数据的预测 1.LR简介 2.LR算法模型 3.LR用于简单数据的预测 二.LRC的简介与算法流程 1.LRC(线性回归分类)简介 2.LRC算法 ...

  7. 机器学习原来如此有趣:用深度学习识别人脸

    本系列文章目前已经更新两期,分别是: 机器学习原来如此有趣!全世界最简单的机器学习入门指南. 机器学习原来如此有趣:如何故意欺骗神经网络 你是否有注意到Facebook最近开发了一个非同寻常的功能:将 ...

  8. 机器学习入门笔记(七):聚类

    文章目录 一.聚类的基本概念 1.1 相似度或距离 1.2 类或簇 1.3 类与类之间的距离 二.层次聚类 2.1 基本概念 2.1 算法描述 2.3 例题 三.K均值聚类 3.1 模型 3.2 策略 ...

  9. 学习笔记--机器学习入门

    1.概念 利用计算机从历史数据中找出规律,并把这些规律用到对未来不确定场景做决策. 计算机是机器学习的驱动主体,数据分析主体为人,一般靠分析师的经验和知识水平,存在一定的局限性:历史数据则是对预判决策 ...

最新文章

  1. JTable表头也就是标题行给隐藏
  2. hyfsoft java_Java自动化测试框架-04 - 来给你的测试报告化个妆整个形 - (上)(详细教程)...
  3. 《深入浅出Nodejs》笔记——模块机制(2)
  4. python获取月份字符串_python 正则表达式获取字符串中所有的日期和时间
  5. java ftp上传文件 linux_Java实现把文件上传至ftp服务器
  6. 计算机网络专业教学模式,计算机网络技术专业教学模式改革探索
  7. svn: Can't open file '/a/b/db/txn-current-lock': Permission denied
  8. 创建自己的Java批注
  9. Kali Linux 秘籍 第三章 高级测试环境
  10. 清华大学计算机科学系王瑀屏,清华大学材料科学与工程系
  11. 将字符串转化为ASCII码
  12. js 数组不限长度,不限类型
  13. linux基础09——nl
  14. java猫大叫一声_为什么我的猫一直叫着呢?
  15. M-K趋势检验以及突变检验
  16. 大连理工计算机科学与技术,学院概况-大连理工大学计算机科学与技术学院
  17. 什么形状的蓝牙耳机戴着舒服?长时间佩戴舒服的蓝牙耳机推荐
  18. 2020前端学习路线收集整理
  19. 达人观点 :你应该选机器学习还是数据科学?
  20. Lecture09:Benders分解--理论部分

热门文章

  1. git中使用tag打标签管理版本
  2. 华为服务器进入系统怎么退出安全模式,服务器怎么进入安全模式
  3. 照片调色系列教程(6):唯美婚纱效果
  4. wireshark中抓取ICMP报文
  5. 谜底是计算机的谜语英语,谜底是英语的谜语
  6. shopify订单管理软件,获取订单方法
  7. Keras NLP——词袋模型
  8. python+moviepy音视频处理(二):视频添加文字(字幕)、视频添加汉字不显示问题
  9. 编写一个Java应用程序,该应用程序包括2个类:Print类和主类E。Print 类里有一个方法output()功能是输出100 ~ 999之间的所有水仙花数(各位数字的 立方和等于这个三位数本身,如
  10. Bandizip安装教程---图文讲解