[Искусственное детство], да, это называется [Искусственное детство]. Поскольку это вводная серия, это означает, что содержание относительно незрелое и подходит для начинающих.Больше всего раздражает сказать, что у меня трясутся руки.
Входные данные для подбора модели машинного обучения часто представляют собой многомерные данные, и это измерение может быть очень большим. Например, подсчитывая частоту слов в статье, статью можно рассматривать как вектор слов. Количество слов очень велико, и каждое слово представляет собой размерность, такие многомерные данные будут потреблять много вычислительных ресурсов при подгонке, а это означает, что происходит размерная катастрофа.
В случае размерной катастрофы мы обычно используем алгоритмы уменьшения размерности для сжатия объема данных, чтобы уменьшить объем хранилища и вычислительных ресурсов, потребляемых обучением модели.
Для данных с большими размерностями часто существует корреляция между измерениями, что приводит к избыточности данных. Например, две части информации, одна о том, что этот человек мужчина, а вторая о том, что этот человек не женщина, тогда эти две части информации связаны, и одну можно исключить. Эффект уменьшения размерности заключается в устранении этой избыточной информации. Уменьшение размерности также можно использовать для удаления информации с небольшим объемом информации для достижения сжатия информации. Например, изображения можно сжимать с помощью алгоритмов уменьшения размерности.
Более часто используемый алгоритм уменьшения размерности — это алгоритм PCA [Анализ основных компонентов], который основан на математическом алгоритме декомпозиции матрицы SVD. Конкретную формулу здесь приводить нельзя, потому что я не хочу отпугивать половину читателей.
Например, сфотографируйте женщину, как мы определяем, красивая ли женщина? Мы рассмотрим некоторые ключевые особенности, такие как красивое ли лицо, красивая ли грудь, ягодицы, ноги, и есть ли узор на одежде или небольшой геморрой на руке, мы не не заботятся об этих функциях. Да, это можно отфильтровать. Нас интересуют главные компоненты, т. е. признаки с большими коэффициентами вклада в результат. Роль алгоритма SVD состоит в том, чтобы сказать вам, какие функции важны и насколько важны, а какие функции не важны и могут быть проигнорированы.Затем мы используем модуль TruncatedSVD, предоставленный sklearn, для сжатия изображений красоты.
Во-первых, мы используем matplotlib для отображения красивого изображения в формате png. Формат изображения в формате png очень прост. Каждый пиксель имеет значение цвета RGB в трех измерениях. Все изображение представляет собой матрицу размеров «высота x ширина x 3».
Давайте сначала используем matplotlib для отображения красивых картинок.
# -*- coding: utf-8 -*-
import matplotlib.pyplot as plt
import matplotlib.image as img
# 读入图片矩阵600*900*3
img_matrix = img.imread('beauty.png')
plt.imshow(img_matrix)
plt.show()
Затем мы выполняем преобразование SVD, сначала преобразуем данные трех каналов изображения RGB в пространство признаков, затем восстанавливаем данные канала из пространства признаков, а затем объединяем данные трех обработанных каналов в данные изображения для отображения, сравниваем с исходным разница изображения.
# -*- coding: utf-8 -*-
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.image as img
from sklearn.decomposition import TruncatedSVD
# 加载png数据矩阵
img_array = img.imread('beauty.png')
shape = img_array.shape
# 高度、宽度、RGB通道数=3
height, width, channels = shape[0], shape[1], shape[2]
# 转换成numpy array
img_matrix = np.array(img_array)
# 存储RGB三个通道转换后的数据
planes = []
# RGB三个通道分别处理
for idx in range(channels):
# 提取通道
plane = img_matrix[:, :, idx]
# 转成二维矩阵
plane = np.reshape(plane, (height, width))
# 保留10个主成分
svd = TruncatedSVD(n_components=10)
# 拟合数据,进行矩阵分解,生成特征空间,剔去无关紧要的成分
svd.fit(plane)
# 将输入数据转换到特征空间
new_plane = svd.transform(plane)
# 再将特征空间的数据转换会数据空间
plane = svd.inverse_transform(new_plane)
# 存起来
planes.append(plane)
# 合并三个通道平面数据
img_matrix = np.dstack(planes)
# 显示处理后的图像
plt.imshow(img_matrix)
plt.show()
Сохраните 10 визуализаций основных компонентов, мозаика немного серьезная, вы можете видеть контур, но вы не можете четко видеть лицо
Сохраните 50 основных компонентов, что немного похоже на эффект старомодного цветного телевизора.В нем можно почти узнать красивую женщину.
Держите 100 основных компонентов, в основном очень четкими Какова примерная степень сжатия этого изображения при различном количестве главных компонент?Размер изображения в этом примере 600 x 900. После сжатия оно становится двумя матрицами, одна матрица 600 x n_components, другая матрица n_components x 900, и некоторая другая информация о переменных трассировки. Тогда степень сжатия составляет около n_components x 15/5400, тогда при сохранении 50 основных компонентов степень сжатия составляет около 14%. При сохранении 100 основных компонентов степень сжатия составляет около 28%.
Читайте цикл статей [Искусственное детство] и обратите внимание на паблик-аккаунт [Code Cave]