Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import pandas as pd
- import matplotlib.pyplot as plt
- import seaborn as sns
- iris_setosa_colour = "blue"
- iris_virginica_colour = "red"
- iris_versicolor_colour = "green"
- df = pd.read_csv('Iris.csv')
- duplicate =df.duplicated()
- print(duplicate)
- unique = df.nunique()
- print(unique)
- # podział na grupy
- groups = df.groupby('Species')
- # wyodrębnienie danych dla każdej grupy
- data = groups.get_group('Iris-setosa'), groups.get_group('Iris-versicolor'), groups.get_group('Iris-virginica')
- Iris_setosa_data = data[0]
- Iris_versicolor_data = data[1]
- Iris_virginica_data = data[2]
- var = "Iris setosa"
- print(f'{var:*^100}')
- print(Iris_setosa_data.describe())
- var = "Iris_versicolor"
- print(f'{var:*^100}')
- print(Iris_versicolor_data.describe())
- var = "Iris_virginica"
- print(f'{var:*^100}')
- print(Iris_virginica_data.describe())
- Iris_setosa = Iris_setosa_data.drop(columns=['Id' , 'Species'])
- Iris_versicolor = Iris_versicolor_data.drop(columns=['Id' , 'Species'])
- Iris_virginica = Iris_virginica_data.drop(columns=['Id' , 'Species'])
- # obliczanie korelacji
- setosa_corr = Iris_setosa.corr()
- versicolor_corr = Iris_versicolor.corr()
- virginica_corr = Iris_virginica.corr()
- # Wykresy korelacji
- fig, axes = plt.subplots(1, 3, figsize=(15, 5))
- # Wykres korelacji dla Setosa
- sns.heatmap(setosa_corr, ax=axes[0], cmap='viridis', annot=True)
- axes[0].set_title('Setosa Correlation')
- # Wykres korelacji dla Versicolor
- sns.heatmap(versicolor_corr, ax=axes[1], cmap='viridis', annot=True)
- axes[1].set_title('Versicolor Correlation')
- # Wykres korelacji dla Virginica
- sns.heatmap(virginica_corr, ax=axes[2], cmap='viridis', annot=True)
- axes[2].set_title('Virginica Correlation')
- plt.tight_layout()
- plt.show()
- plt.figure(figsize=(12, 6))
- plt.subplot(1, 2, 1)
- plt.scatter(Iris_setosa['PetalLengthCm'], Iris_setosa['PetalWidthCm'], color=iris_versicolor_colour, label='Iris Versicolor')
- plt.scatter(Iris_versicolor['PetalLengthCm'], Iris_versicolor['PetalWidthCm'], color=iris_virginica_colour, label='Iris Virginica')
- plt.scatter(Iris_virginica['PetalLengthCm'], Iris_virginica['PetalWidthCm'], color=iris_setosa_colour, label='Iris Setosa')
- plt.xlabel('Petal Length (cm)')
- plt.ylabel('Petal Width (cm)')
- plt.title('Petal Length vs Petal Width')
- plt.legend()
- plt.subplot(1, 2, 2)
- plt.scatter(Iris_setosa['SepalLengthCm'], Iris_setosa['SepalWidthCm'], color=iris_versicolor_colour, label='Iris Versicolor')
- plt.scatter(Iris_versicolor['SepalLengthCm'], Iris_versicolor['SepalWidthCm'], color=iris_virginica_colour, label='Iris Virginica')
- plt.scatter(Iris_virginica['SepalLengthCm'], Iris_virginica['SepalWidthCm'], color=iris_setosa_colour, label='Iris Setosa')
- plt.xlabel('Sepal Length (cm)')
- plt.ylabel('Sepal Width (cm)')
- plt.title('Sepal Length vs Sepal Width')
- plt.legend()
- plt.show()
- plt.figure(figsize=(12, 6))
- # Petal Length
- plt.subplot(1, 2, 1)
- plt.hist(x=Iris_versicolor['PetalLengthCm'], bins=10, label='Iris Versicolor', color='blue', alpha=0.5, density=True, orientation='vertical')
- plt.hist(x=Iris_setosa['PetalLengthCm'], bins=10, label='Iris Setosa', color='green', alpha=0.5, density=True, orientation='vertical')
- plt.hist(x=Iris_virginica['PetalLengthCm'], bins=10, label='Iris Virginica', color='red', alpha=0.5, density=True, orientation='vertical')
- plt.xlabel('Petal Length (cm)')
- plt.ylabel('Density')
- plt.title('Petal Length Distribution')
- plt.legend()
- # Petal Width
- plt.subplot(1, 2, 2)
- plt.hist(Iris_versicolor['PetalWidthCm'], bins=10, label='Iris Versicolor', color='blue', alpha=0.5, density=True, orientation='vertical')
- plt.hist(Iris_setosa['PetalWidthCm'], bins=10, label='Iris Setosa', color='green', alpha=0.5, density=True, orientation='vertical')
- plt.hist(Iris_virginica['PetalWidthCm'], bins=10, label='Iris Virginica', color='red', alpha=0.5, density=True, orientation='vertical')
- plt.xlabel('Petal Width (cm)')
- plt.ylabel('Density')
- plt.title('Petal Width Distribution')
- plt.legend()
- plt.tight_layout()
- plt.show()
- plt.figure(figsize=(12, 6))
- # Petal Width
- plt.subplot(1, 2, 2)
- plt.hist(Iris_versicolor['SepalWidthCm'], bins=10, label='Iris Versicolor', color='blue', alpha=0.5, density=True)
- plt.hist(Iris_setosa['SepalWidthCm'], bins=10, label='Iris Setosa', color='green', alpha=0.5, density=True)
- plt.hist(Iris_virginica['SepalWidthCm'], bins=10, label='Iris Virginica', color='red', alpha=0.5, density=True)
- plt.xlabel('Sepal Width (cm)')
- plt.ylabel('Density')
- plt.title('Sepal Width Distribution')
- plt.legend()
- # Petal Length
- plt.subplot(1, 2, 1)
- plt.hist(Iris_versicolor['SepalLengthCm'], bins=10, label='Iris Versicolor', color='blue', alpha=0.5, density=True)
- plt.hist(Iris_setosa['SepalLengthCm'], bins=10, label='Iris Setosa', color='green', alpha=0.5, density=True)
- plt.hist(Iris_virginica['SepalLengthCm'], bins=10, label='Iris Virginica', color='red', alpha=0.5, density=True)
- plt.xlabel('Sepal Length (cm)')
- plt.ylabel('Density')
- plt.title('Sepal Length Distribution')
- plt.legend()
- plt.tight_layout()
- plt.show()
- # Box plots
- plt.figure(figsize=(15, 5))
- plt.subplot(1, 3, 1)
- sns.boxplot(x='Species', y='PetalWidthCm', data=df)
- plt.title('Petal Width')
- plt.subplot(1, 3, 2)
- sns.boxplot(x='Species', y='SepalLengthCm', data=df)
- plt.title('Sepal Length')
- plt.subplot(1, 3, 3)
- sns.boxplot(x='Species', y='SepalWidthCm', data=df)
- plt.title('Sepal Width')
- plt.tight_layout()
- plt.show()
- # sepal - kielich
- # petal - płatek
- # Wnioski:
- # Iris Setosa:
- # - Najmniniejsze kielichy ale za to najszersze
- # - średnia długości kielicha : 5.0 cm
- # - średnia szerokości kielicha : 3.4 cm
- # - średnia długości płatka : 1.46 cm
- # - średnia szerokości płatka : 0.24 cm
- #
- # Iris Versicolor:
- # - średnia długości kielicha : 5.9 cm
- # - średnia szerokości kielicha : 2.77 cm
- # - średnia długości płatka : 4.26 cm
- # - średnia szerokości płatka : 1.33 cm
- # Iris Virginica:
- # - Największe kielichy
- # - średnia długości kielicha : 6.6 cm
- # - średnia szerokości kielicha : 2.97 cm
- # Najdłuższe płatki
- # - średnia długości płatka : 5.55 cm
- # - średnia szerokości płatka : 2.03 cm
- #
- # Corellation:
- # Iris Setosa: Największa korrelacja występuje pomiędzy szerokościa kielicha a długością kielicha (0,75)
- # Iris Vesicolor: Najwieksza korrelacja występuje pomiędzy dlugościa płatka a szerokością płatka (0,79),
- # oraz pomiędzy dlugością płatka a długością kielicha (0,75)
- # Iris Virginica: Największa korrelacja występuje pomiędzy długością płatka a długością kielicha (0,86)
- #
- # Scatter plot:
- # Petal Lenght vs Petal Width: Dla każdego gatunku można zauważyć wyrażne podziały pomiędzy poszczególnymi gatunkami dane są w miarę dobrze oddzielone
- # Sepal Lenght vs Sepal Width: Dla gatunku Iris Setosa i Iris Virginica można zauważyć wyraźne podobieństwo, ich dane są wmiare zgrupowane i wymieszane ze sobą
- # Histogram:
- # Petal Lenght: Dla każdego gatunku można zauważyć wyraźne podziały pomiędzy poszczególnymi gatunkami dane są w miarę dobrze oddzielone
- # Petal Width: Dla każdego gatunku można zauważyć wyraźne podziały pomiędzy poszczególnymi gatunkami dane są w miarę dobrze oddzielone
- # Spepal Lenght: Widać znaczne podobieństwo pomiędzy Iris Virginica a Iris Versicolor
- # Sepal Width: Irisi Versicolor i Iris Setosa znacznie sie różnią od siebie, natomiast Iris Virginica jest zbliżona do obydwu gatunków ale najbardziej do Iris Vesicolor
- # Test and Learn
- # Dla każdego gatunku wyodrębniamy dane do nauki i testowania
- from sklearn.model_selection import train_test_split
- # Podział dla Iris setosa
- X_setosa = Iris_setosa_data.drop(columns=['Species'])
- y_setosa = Iris_setosa_data['Species']
- X_train_setosa, X_test_setosa, y_train_setosa, y_test_setosa = train_test_split(X_setosa, y_setosa, test_size=0.2, random_state=42)
- # Podział dla Iris versicolor
- X_versicolor = Iris_versicolor_data.drop(columns=['Species'])
- y_versicolor = Iris_versicolor_data['Species']
- X_train_versicolor, X_test_versicolor, y_train_versicolor, y_test_versicolor = train_test_split(X_versicolor, y_versicolor, test_size=0.2, random_state=42)
- # Podział dla Iris virginica
- X_virginica = Iris_virginica_data.drop(columns=['Species'])
- y_virginica = Iris_virginica_data['Species']
- X_train_virginica, X_test_virginica, y_train_virginica, y_test_virginica = train_test_split(X_virginica, y_virginica, test_size=0.2, random_state=42)
- # Podział na cechy (X) i etykiety (y)
- X_all = df.drop(columns=['Species'])
- y_all = df['Species']
- # Podział danych na zbiory uczące i testujące
- X_train_all, X_test_all, y_train_all, y_test_all = train_test_split(X_all, y_all, test_size=0.2, random_state=42)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement