Esta es la tarea tres cuando tomé ciencia de datos el año pasado. Fue enseñada por el maestro Xiao Ruoxiu en ese momento, pero escuché que después de este año, la informática y el Internet de las cosas se enseñarán con el mismo nivel de dificultad. Este El artículo puede ser solo un mero registro. Mi hermana, pero cuando estaba en ciencia de datos, el Sr. Xiao no se registró. Está bien. Después de las últimas cuatro tareas, obtuve un puntaje bastante bueno, incluso si no tomo cursos electivos en el extranjero.
Enlace anterior:
Tarea de ciencia de datos 2_ Predicción de precios de transacciones internas
Tabla de contenido
1. Importar bibliotecas relacionadas
6. visualización de regresión lineal
3. Visualización de resultados
En cuarto lugar, se adjunta el código fuente.
1. Descripción del trabajo
En esta tarea, se proporciona un conjunto de datos de iris, los datos son iris, incluidos 150 registros, y los campos se han explicado en el curso. El propósito de esta tarea es predecir con precisión la categoría del iris en función de las cuatro características de ancho de pétalo, largo de pétalo, ancho de sépalo y largo de sépalo. Examina principalmente la comprensión y la aplicación de algoritmos de clasificación por parte de los estudiantes.
Requisitos específicos:
(1 ) Elija un método razonable de desensamblaje de tres clases, implemente dos clasificadores en regresión logística, k-NN , SVM y árbol de decisión, determine razonablemente los hiperparámetros y seleccione indicadores de evaluación razonables para analizar el rendimiento del clasificador.
(2) Realice un clasificador integrado y seleccione un índice de evaluación razonable para analizar el rendimiento del clasificador.
2. Proceso de operación
1. Importar bibliotecas relacionadas
import numpy as np
import pandas as pd
from pandas import plotting
import matplotlib.pyplot as plt
plt.style.use('seaborn')
import seaborn as sns
sns.set_style("whitegrid")
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import LabelEncoder
from sklearn.neighbors import KNeighborsClassifier
from sklearn import svm
from sklearn import metrics
from sklearn.tree import DecisionTreeClassifier
2. Leer datos
iris = pd.read_csv('iris.csv')
3. Dibuja la trama del violín
f, axes = plt.subplots(2, 2, figsize=(8, 8), sharex=True)
sns.despine(left=True)
sns.violinplot(x='targetname', y='sepal length (cm)', data=iris, palette=antV, ax=axes[0, 0])
sns.violinplot(x='targetname', y='sepal width (cm)', data=iris, palette=antV, ax=axes[0, 1])
sns.violinplot(x='targetname', y='petal length (cm)', data=iris, palette=antV, ax=axes[1, 0])
sns.violinplot(x='targetname', y='petal width (cm)', data=iris, palette=antV, ax=axes[1, 1])
plt.show()
4. Dibujar diagrama de puntos
f, axes = plt.subplots(2, 2, figsize=(8, 8), sharex=True)
sns.despine(left=True)
sns.pointplot(x='targetname', y='sepal length (cm)', data=iris, color=antV[0], ax=axes[0, 0])
sns.pointplot(x='targetname', y='sepal width (cm)', data=iris, color=antV[0], ax=axes[0, 1])
sns.pointplot(x='targetname', y='petal length (cm)', data=iris, color=antV[0], ax=axes[1, 0])
sns.pointplot(x='targetname', y='petal width (cm)', data=iris, color=antV[0], ax=axes[1, 1])
plt.show()
5. Use las curvas de Andrews para convertir cada observación multivariada en una curva y representar los coeficientes de la serie de Fourier, lo que es útil para detectar valores atípicos en datos de series de tiempo.
plt.subplots(figsize = (10,8))
plotting.andrews_curves(iris, 'targetname', colormap='cool')
plt.show()
g = sns.lmplot(data=iris, x='sepal width (cm)', y='sepal length (cm)', palette=antV, hue='targetname')
6. visualización de regresión lineal
g = sns.lmplot(data=iris, x='sepal width (cm)', y='sepal length (cm)', palette=antV, hue='targetname')
g = sns.lmplot(data=iris, x='petal width (cm)', y='petal length (cm)', palette=antV, hue='targetname')
7. Encuentra la correlación entre diferentes características en el conjunto de datos a través del mapa de calor
fig=sns.heatmap(iris.corr(), annot=True, cmap='GnBu', linewidths=1, linecolor='k',
square=True, mask=False, vmin=-1, vmax=1, cbar_kws={"orientation": "vertical"}, cbar=True)
8. Aprendizaje automático
X = iris[['sepal length (cm)', 'sepal width (cm)', 'petal length (cm)', 'petal width (cm)']]
y = iris['targetname']
encoder = LabelEncoder()
y = encoder.fit_transform(y)
#print(y)
train_X, test_X, train_y, test_y = train_test_split(X, y, test_size = 0.3, random_state = 101)
#print(train_X.shape, train_y.shape, test_X.shape, test_y.shape)
# Support Vector Machine
model = svm.SVC()
model.fit(train_X, train_y)
prediction = model.predict(test_X)
print('The accuracy of the SVM is: {0}'.format(metrics.accuracy_score(prediction,test_y)))
# Logistic Regression
model = LogisticRegression()
model.fit(train_X, train_y)
prediction = model.predict(test_X)
print('The accuracy of the Logistic Regression is: {0}'.format(metrics.accuracy_score(prediction,test_y)))
# Decision Tree
model=DecisionTreeClassifier()
model.fit(train_X, train_y)
prediction = model.predict(test_X)
print('The accuracy of the Decision Tree is: {0}'.format(metrics.accuracy_score(prediction,test_y)))
# K-Nearest Neighbours
model=KNeighborsClassifier(n_neighbors=3)
model.fit(train_X, train_y)
prediction = model.predict(test_X)
print('The accuracy of the KNN is: {0}'.format(metrics.accuracy_score(prediction,test_y)))
La precisión de los cuatro métodos:
La precisión de la SVM es: 0.9777777777777777
La precisión de la regresión logística es: 0.9777777777777777
La precisión del árbol de decisión es: 0,9555555555555556
La precisión del KNN es: 1.0
3. Visualización de resultados
En cuarto lugar, se adjunta el código fuente:
import numpy as np
import pandas as pd
from pandas import plotting
#matplotlib inline
import matplotlib.pyplot as plt
plt.style.use('seaborn')
import seaborn as sns
sns.set_style("whitegrid")
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import LabelEncoder
from sklearn.neighbors import KNeighborsClassifier
from sklearn import svm
from sklearn import metrics
from sklearn.tree import DecisionTreeClassifier
iris = pd.read_csv('iris.csv')
#iris.info()
# 设置颜色主题
antV = ['#1890FF', '#2FC25B', '#FACC14', '#223273', '#8543E0', '#13C2C2', '#3436c7', '#F04864']
# 绘制 Violinplot
f, axes = plt.subplots(2, 2, figsize=(8, 8), sharex=True)
sns.despine(left=True)
sns.violinplot(x='targetname', y='sepal length (cm)', data=iris, palette=antV, ax=axes[0, 0])
sns.violinplot(x='targetname', y='sepal width (cm)', data=iris, palette=antV, ax=axes[0, 1])
sns.violinplot(x='targetname', y='petal length (cm)', data=iris, palette=antV, ax=axes[1, 0])
sns.violinplot(x='targetname', y='petal width (cm)', data=iris, palette=antV, ax=axes[1, 1])
plt.show()
f, axes = plt.subplots(2, 2, figsize=(8, 8), sharex=True)
sns.despine(left=True)
sns.pointplot(x='targetname', y='sepal length (cm)', data=iris, color=antV[0], ax=axes[0, 0])
sns.pointplot(x='targetname', y='sepal width (cm)', data=iris, color=antV[0], ax=axes[0, 1])
sns.pointplot(x='targetname', y='petal length (cm)', data=iris, color=antV[0], ax=axes[1, 0])
sns.pointplot(x='targetname', y='petal width (cm)', data=iris, color=antV[0], ax=axes[1, 1])
plt.show()
#g = sns.pairplot(data=iris, palette=antV, hue= 'targetname')
plt.subplots(figsize = (10,8))
plotting.andrews_curves(iris, 'targetname', colormap='cool')
plt.show()
g = sns.lmplot(data=iris, x='sepal width (cm)', y='sepal length (cm)', palette=antV, hue='targetname')
g = sns.lmplot(data=iris, x='petal width (cm)', y='petal length (cm)', palette=antV, hue='targetname')
fig=plt.gcf()
fig.set_size_inches(12, 8)
fig=sns.heatmap(iris.corr(), annot=True, cmap='GnBu', linewidths=1, linecolor='k',
square=True, mask=False, vmin=-1, vmax=1, cbar_kws={"orientation": "vertical"}, cbar=True)
X = iris[['sepal length (cm)', 'sepal width (cm)', 'petal length (cm)', 'petal width (cm)']]
y = iris['targetname']
encoder = LabelEncoder()
y = encoder.fit_transform(y)
#print(y)
train_X, test_X, train_y, test_y = train_test_split(X, y, test_size = 0.3, random_state = 101)
#print(train_X.shape, train_y.shape, test_X.shape, test_y.shape)
# Support Vector Machine
model = svm.SVC()
model.fit(train_X, train_y)
prediction = model.predict(test_X)
print('The accuracy of the SVM is: {0}'.format(metrics.accuracy_score(prediction,test_y)))
# Logistic Regression
model = LogisticRegression()
model.fit(train_X, train_y)
prediction = model.predict(test_X)
print('The accuracy of the Logistic Regression is: {0}'.format(metrics.accuracy_score(prediction,test_y)))
# Decision Tree
model=DecisionTreeClassifier()
model.fit(train_X, train_y)
prediction = model.predict(test_X)
print('The accuracy of the Decision Tree is: {0}'.format(metrics.accuracy_score(prediction,test_y)))
# K-Nearest Neighbours
model=KNeighborsClassifier(n_neighbors=3)
model.fit(train_X, train_y)
prediction = model.predict(test_X)
print('The accuracy of the KNN is: {0}'.format(metrics.accuracy_score(prediction,test_y)))
5. Experiencia
A través del estudio del caso del iris, tengo una comprensión preliminar del contenido del aprendizaje automático y siento el encanto de este tema.