机器学习之K均值算法应用
2021-02-12 20:20
标签:整型 替代 png 时间 rcp 完成 开发 load 聚类 1. 应用K-means算法进行图片压缩 读取一张图片 观察图片文件大小,占内存大小,图片数据结构,线性化 用kmeans对图片像素颜色进行聚类 获取每个像素的颜色类别,每个类别的颜色 压缩图片生成:以聚类中收替代原像素颜色,还原为二维 观察压缩图片的文件大小,占内存大小 原图文件大小,所占内存,数据结构如下图: 原图如下: 压缩图后的文件大小和所占内存如下图: 压缩后的图如下: 图片存储如下图: 2. 观察学习与生活中可以用K均值解决的问题。 从数据-模型训练-测试-预测完整地完成一个应用案例。 这个案例会作为课程成果之一,单独进行评分。 利用K均值算法将软考测试成绩(包括签到,答题等)的同学进行分类 结果如下图: 机器学习之K均值算法应用 标签:整型 替代 png 时间 rcp 完成 开发 load 聚类 原文地址:https://www.cnblogs.com/zhff/p/12729317.html# -*- coding:utf-8 -*-
# 开发时间:2020/4/1815:59
# 文件名称:K均值算法应用压缩照片.py
from sklearn.datasets import load_sample_image
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt
import matplotlib.image as img
import sys
import numpy as np
plt.rcParams[‘font.sans-serif‘] = [‘SimHei‘] #中文显示
china = load_sample_image("china.jpg")
img.imsave(‘E://china.jpg‘,china)#存储图片在E盘
print("原图片文件大小:",china.size)#文件大小
print("原图片占内存大小:",sys.getsizeof(china))#内存空间大小
print("原图片的数据结构:",china.shape)#图片数据结构
plt.title("原图片")
plt.imshow(china)
plt.show()
image = china[::3, ::3]
print("我不是药神")
x=image.reshape(-1,3)#线性化
print("线性化结构变化前",china.shape)
print("线性化结构变化后",x.shape)
n_colors=64#将数据分为64个聚类中心
model=KMeans(n_colors)
labels = model.fit_predict(x) # 每个像素的颜色类别
colors = model.cluster_centers_ # 每个类别的颜色
new_img=colors[labels].reshape(image.shape)
new_image = new_img.astype(np.uint8)#转换为整型
print("压缩后文件大小:",new_image.size)
print("压缩后占内存大小:",sys.getsizeof(new_image))
plt.title("压缩图片")
plt.imshow(new_image)
plt.show()
img.imsave(‘E://china2.jpg‘,new_image)#存储图片在E盘
# -*- coding:utf-8 -*-
# 开发时间:2020/4/1823:17
# 文件名称:分数分类.py
import pandas as pd
import numpy as np
from sklearn.cluster import KMeans
path = r‘.\test.xls‘
df =pd.read_excel(path)#读取文件
df
score =np.array(df.iloc[:,3:5].fillna(value=0).astype(int))#将空值填充0,转换为整型
ests = KMeans(n_clusters=4)#分成4类优良中差
ests.fit(score)#训练模型
y_kmeanss= ests.predict(score)#预测
g0 =np.array(df[y_kmeanss==0][‘name‘])
print("第一类:",end=" ")
for list in g0:
print(list,end=" ")
print("")
print("第二类:",end=" ")
g1 =np.array(df[y_kmeanss==1][‘name‘])
for list in g1:
print(list,end=" ")
print("")
print("第三类:",end=" ")
g2 =np.array(df[y_kmeanss==2][‘name‘])
for list in g2:
print(list,end=" ")
print("")
print("第四类:",end=" ")
g3 =np.array(df[y_kmeanss==3][‘name‘])
for list in g3:
print(list,end=" ")