48 lines
1.2 KiB
Python
48 lines
1.2 KiB
Python
from sklearn.datasets import load_iris
|
|
from sklearn.model_selection import train_test_split
|
|
from sklearn.neighbors import KNeighborsClassifier as KNN
|
|
from sklearn.metrics import accuracy_score
|
|
import pandas as pd
|
|
|
|
iris = load_iris()
|
|
#Esto es solo para visualizar de manera mas clara que datos tenemos en nuestro dataset, esto no se suele usar en ML
|
|
df = pd.DataFrame(data=iris.data, columns=iris.feature_names)
|
|
df["target"] = iris.target
|
|
print(df.head())
|
|
|
|
XirisData = iris.data
|
|
YTarget = iris.target
|
|
|
|
XTrain, XTest, YTrain, YTest = train_test_split(XirisData, YTarget, test_size=0.2, random_state=42)
|
|
|
|
model = KNN(n_neighbors=3)
|
|
|
|
model.fit(XTrain, YTrain)
|
|
|
|
predictions = model.predict(XTest)
|
|
print(f"Predictions: {predictions}")
|
|
|
|
accuracy = accuracy_score(YTest, predictions)
|
|
print(f"Accuracy: {accuracy * 100:.2f}%")
|
|
|
|
"""Ejemplo: [cm] -> R: "Setosa"
|
|
Largo del sepalo = 5.1
|
|
Ancho del sepalo = 3.5
|
|
Largo del petalo = 1.4
|
|
Ancho del petalo = 0.2
|
|
"""
|
|
|
|
newFlower = pd.Series({
|
|
"sepal length (cm)": 5.1,
|
|
"sepal width (cm)": 3.5,
|
|
"petal length (cm)": 1.4,
|
|
"petal width (cm)": 0.2
|
|
})
|
|
|
|
newFlowerArray = newFlower.values.reshape(1, -1)
|
|
|
|
predicitionNewFlower = model.predict(newFlowerArray)
|
|
|
|
specie = iris.target_names[predicitionNewFlower[0]]
|
|
|
|
print(f"Specie: {specie}") |