Introducción al aprendizaje automático de Python- (1)

Introducción al aprendizaje automático

Si eres un blanco de aprendizaje automático como yo, aquí te llevaré a través de un proyecto simple para que comiences con el aprendizaje automático. Vamos!

1. Introducción del proyecto

Este proyecto consiste en clasificar las flores de iris. El conjunto de datos contiene la información de clasificación de los tres subgéneros de flores de iris. Se guarda como modelo a través del aprendizaje automático para realizar la clasificación automática. Este proyecto es un problema de clases múltiples, aprendizaje supervisado.
Existen los siguientes pasos:
(1) Importar datos
(2) Información general
(3) Visualización de datos
(4) Algoritmo de evaluación
(5) Implementar predicción

2. Importar datos

2.1 Importar biblioteca

El código es el siguiente:

# 导入类库
from pandas import read_csv
from pandas.plotting import scatter_matrix
from matplotlib import pyplot
from sklearn.model_selection import train_test_split
from sklearn.model_selection import KFold
from sklearn.model_selection import cross_val_score
from sklearn.metrics import classification_report
from sklearn.metrics import confusion_matrix
from sklearn.metrics import accuracy_score
from sklearn.linear_model import LogisticRegression
from sklearn.tree import DecisionTreeClassifier
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis
from sklearn.neighbors import KNeighborsClassifier
from sklearn.naive_bayes import GaussianNB
from sklearn.svm import SVC

Aquí, si no logramos importar, será mejor que verifique si algunas bibliotecas no están instaladas a continuación.

2.2 Importar datos

Podemos descargar el conjunto de datos de iris en el almacén de aprendizaje automático de UCI, y podemos buscarlo en Baidu. Después de descargar y guardar en nuestro directorio de trabajo, use Pandas para importar datos csv y análisis estadísticos de los datos, y use Matplotlib para la visualización de datos. Al importar datos, establecemos un nombre para cada dato, lo que nos ayudará más adelante en el trabajo de visualización. El código es el siguiente:

# 导入数据
filename = 'iris.data.csv'
names = ['separ-length', 'separ-width', 'petal-length', 'petal-width', 'class']
dataset = read_csv(filename, names=names)

2.3 Datos generales

Hacemos cuatro cosas
(1) ver la dimensión de datos
(2) ver los datos en sí
(3) contar todas las características de datos
(4) la distribución de la clasificación de datos El
siguiente es el código relevante:

#显示数据维度
print('数据维度: 行 %s,列 %s' % dataset.shape)

# 查看数据的前10行
print(dataset.head(10))

# 统计描述数据信息
print(dataset.describe())

# 分类分布情况
print(dataset.groupby('class').size())

2.4 Visualización de datos

Este es mi enlace favorito. Es muy emocionante pensar en tantos datos aburridos que se pueden convertir en imágenes normales. El
código es el siguiente:

# 箱线图
dataset.plot(kind='box', subplots=True, layout=(2,2), sharex=False, sharey=False)
pyplot.show()

# 直方图
dataset.hist()
pyplot.show()

# 散点矩阵图
scatter_matrix(dataset)
pyplot.show()

Los resultados son los siguientes:


2.5 Algoritmo de evaluación

Agregue sus modelos a través de diferentes algoritmos y evalúe su precisión para encontrar el algoritmo más adecuado. Los siguientes pasos:
(1) Separar el conjunto de datos de evaluación
(2) Usar el modelo de validación cruzada 10 veces
(3) Generar 6 modelos diferentes para predecir los nuevos datos
(4) Seleccionar el modelo óptimo El
código es el siguiente:

# 分离数据集
array = dataset.values
X = array[:, 0:4]
Y = array[:, 4]
validation_size = 0.2
seed = 7
X_train, X_validation, Y_train, Y_validation = \
    train_test_split(X, Y, test_size=validation_size, random_state=seed)

# 算法审查
models = {}
models['LR'] = LogisticRegression()
models['LDA'] = LinearDiscriminantAnalysis()
models['KNN'] = KNeighborsClassifier()
models['CART'] = DecisionTreeClassifier()
models['NB'] = GaussianNB()
models['SVM'] = SVC()
# 评估算法
results = []
for key in models:
    kfold = KFold(n_splits=10, random_state=seed)
    cv_results = cross_val_score(models[key], X_train, Y_train, cv=kfold, scoring='accuracy')
    results.append(cv_results)
    print('%s: %f (%f)' %(key, cv_results.mean(), cv_results.std()))

# 箱线图比较算法
fig = pyplot.figure()
fig.suptitle('Algorithm Comparison')
ax = fig.add_subplot(111)
pyplot.boxplot(results)
ax.set_xticklabels(models.keys())
pyplot.show()

2.6 Previsión de implementación

Los resultados de la evaluación muestran que SVM es el algoritmo más preciso. Ahora use el conjunto de datos de evaluación reservado para verificar este modelo de algoritmo. Tendrá una comprensión precisa e intuitiva del algoritmo de generación.
Use los datos de todos los conjuntos de entrenamiento para generar el modelo de algoritmo de la máquina de vectores de soporte, y use el conjunto de datos de evaluación reservado para dar un informe del modelo de algoritmo. El código es el siguiente:

#使用评估数据集评估算法
svm = SVC()
svm.fit(X=X_train, y=Y_train)
predictions = svm.predict(X_validation)
print(accuracy_score(Y_validation, predictions))
print(confusion_matrix(Y_validation, predictions))
print(classification_report(Y_validation, predictions))

Después de ejecutar el programa, la precisión es 0.8666666666666667
y un informe de análisis de resultados es el siguiente:

Supongo que te gusta

Origin www.cnblogs.com/hhwblogs/p/12716165.html
Recomendado
Clasificación