Escriba aquí el título del catálogo
- Uno, el algoritmo de reducción de dimensionalidad en sklearn
-
- 2. PCA y SVD
- 2.1 Realización de la reducción de dimensionalidad
- Tres, implementación de código sklearn
- 3.1 PCA realiza una visualización de reducción de dimensionalidad en el conjunto de datos del iris
- 3.3 Utilice KNN para encontrar parámetros óptimos después de la reducción de dimensionalidad de PCA
Uno, el algoritmo de reducción de dimensionalidad en sklearn
Los algoritmos de reducción de dimensionalidad en sklearn están todos incluidos en la descomposición del módulo, que es esencialmente un módulo de descomposición matricial. En los últimos diez años, si desea hablar sobre el pionero del progreso de los algoritmos, se puede decir que la descomposición de matrices es única. La descomposición matricial se puede utilizar en reducción de dimensionalidad, aprendizaje profundo, análisis de clústeres, preprocesamiento de datos, aprendizaje de características de baja latitud, sistemas de recomendación, análisis de big data y otros campos.
2. PCA y SVD
Hay una variedad de métodos de selección de características importantes en la ingeniería de características: filtrado de varianza. Si la varianza de una característica es pequeña, significa que es probable que una gran cantidad de valores de esta característica sean iguales (por ejemplo, el 90% son 1, solo el 10% son 0 o incluso el 100% son 1), entonces el valor de esta característica Para la muestra, no hay discriminación y esta función no contiene información válida. A partir de esta aplicación de la varianza, se puede inferir que si una característica tiene una gran varianza, significa que la característica contiene mucha información .
Por lo tanto, en la reducción de dimensionalidad,El indicador de medición de información utilizado por PCA es la varianza de la muestra, también conocida como varianza interpretable. Cuanto mayor es la varianza, más información lleva la característica.
Var representa la varianza de una característica, n representa el tamaño de la muestra, xi representa el valor de cada muestra en una característica y xhat representa la media de esta lista de muestras.
2.1 Realización de la reducción de dimensionalidad
En el paso 3, la técnica que usamos para encontrar n nuevos vectores de características para que los datos puedan comprimirse en algunas características sin perder demasiada información total esdescomposición de la matriz. PCA y SVD son dos algoritmos de reducción de dimensionalidad diferentes, pero ambos siguen el proceso anterior para lograr la reducción de dimensionalidad, pero los métodos de descomposición de la matriz en los dos algoritmos son diferentes y los indicadores de medición de la cantidad de información son diferentes.
1. PCA
PCA usa la varianza como una medida de la cantidad de información y la descomposición de los valores propios para encontrar el espacio V.
2.SVD
3. La diferencia entre PCA y tecnología de selección de funciones
- PCA es para comprimir las características existentes, y las características después de la reducción de dimensionalidad no son ninguna de la matriz de características original, sino una combinación de características.
- Tecnología de selección de características: seleccione la característica con mayor contenido de información de las características existentes, y las características después de la selección aún se pueden interpretar.
Por lo tanto: puedes imaginar,PCAgeneralNo aplicaenExplore la relación entre características y etiquetasModelo (como regresión lineal) porque la relación entre la nueva característica inexplicable y la etiqueta no es significativa. En los modelos de regresión lineal, utilizamos la selección de características.
Tres, implementación de código sklearn
3.1 PCA realiza una visualización de reducción de dimensionalidad en el conjunto de datos del iris
import matplotlib.pyplot as plt
from sklearn.datasets import load_iris
from sklearn.decomposition import PCA
iris = load_iris()
X=iris.data
y=iris.target
X.shape
import pandas as pd
pd.DataFrame(X).head()
# 使用PCA降到两维
tr_X = PCA(2).fit_transform(X)
tr_X
color=['red','black','orange']
iris
plt.figure()
for i in [0,1,2]:
plt.scatter(tr_X[y==i, 0]
, tr_X[y==i, 1]
, c=color[i]
, label=iris.target_names[i])
plt.legend()
plt.title('PCA of IRIS')
plt.show()
#属性explained_variance_,查看降维后每个新特征向量上所带的信息量大小(可解释性方差的大小)
pca.explained_variance_#查看方差是否从大到小排列,第一个最大,依次减小
#属性explained_variance_ratio,查看降维后每个新特征向量所占的信息量占原始数据总信息量的百分比
#又叫做可解释方差贡献率
pca.explained_variance_ratio_
import numpy as np
pca_line = PCA().fit(X)
# pca_line.explained_variance_ratio_#array([0.92461872, 0.05306648, 0.01710261, 0.00521218])
plt.plot([1,2,3,4],np.cumsum(pca_line.explained_variance_ratio_))
plt.xticks([1,2,3,4]) #这是为了限制坐标轴显示为整数
plt.yticks([0,1])
plt.xlabel("number of components after dimension reduction")
plt.ylabel("cumulative explained variance ratio")
plt.show()
3.2 PCA utiliza un algoritmo de bosque aleatorio para encontrar parámetros óptimos después de la reducción de dimensionalidad
from sklearn.decomposition import PCA
from sklearn.ensemble import RandomForestClassifier as RFC
from sklearn.model_selection import cross_val_score
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
data = pd.read_csv(r".\digit recognizor.csv")
X=data.iloc[:,1:]
y=data.iloc[:,0]
pca_line=PCA().fit(X)
print(pca_line.explained_variance_ratio_)
Datos después de la reducción de dimensionalidad:
plt.figure()
plt.plot(np.cumsum(pca_line.explained_variance_ratio_))
plt.xlabel("number of components after dimension reduction")
plt.ylabel("cumulative explained variance ratio")
plt.show()
Juzgando que es mejor reducir a un modelo de pocas dimensiones
score=[]
for i in range(1,101,10):
tr_X=PCA(i).fit_transform(X)
once = cross_val_score(RFC(n_estimators=10,random_state=0)
,tr_X,y,cv=5).mean()
score.append(once)
plt.figure(figsize=[20,5])
plt.plot(range(1,101,10),score)
plt.show()
Encontrado entre 10-25:
método de validación cruzada!
score = []
for i in range(10,25):
X_dr = PCA(i).fit_transform(X)
once = cross_val_score(RFC(n_estimators=10,random_state=0),X_dr,y,cv=5).mean()
score.append(once)
plt.figure(figsize=[20,5])
plt.plot(range(10,25),score)
plt.show()
Descubrió que la reducción de dimensionalidad a 25 es la mejor
X_dr = PCA(22).fit_transform(X)
#======【TIME WARNING:1mins 30s】======#
cross_val_score(RFC(n_estimators=100,random_state=0),X_dr,y,cv=5).mean()#0.946524472295366
3.3 Utilice KNN para encontrar parámetros óptimos después de la reducción de dimensionalidad de PCA
¡El uso de validación cruzada!
#======【TIME WARNING: 】======#
score = []
for i in range(10):
X_dr = PCA(22).fit_transform(X)
once = cross_val_score(KNN(i+1),X_dr,y,cv=5).mean()
score.append(once)
plt.figure(figsize=[20,5])
plt.plot(range(10),score)
plt.show()
El parámetro óptimo es 2