Tarea de ciencia de datos 3_Clasificación de Iris

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 1        

                Tarea de ciencia de datos 2_ Predicción de precios de transacciones internas


Tabla de contenido

Enlace anterior:

1. Descripción del trabajo

2. Proceso de operación

1. Importar bibliotecas relacionadas

2. Leer datos

3. Dibuja la trama del violín

4. Dibujar diagrama de puntos

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.

6. visualización de regresión lineal

7. Encuentra la correlación entre diferentes características en el conjunto de datos a través del mapa de calor

8. Aprendizaje automático

3. Visualización de resultados

En cuarto lugar, se adjunta el código fuente.

5. Experiencia


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.

Supongo que te gusta

Origin blog.csdn.net/weixin_48144018/article/details/124872333
Recomendado
Clasificación