Advertisement
brandblox

Lab_ML(24/02/25)

Feb 24th, 2025
190
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.18 KB | None | 0 0
  1. # %%
  2. from sklearn.model_selection import train_test_split
  3. from sklearn.metrics import accuracy_score
  4. import pandas as pd
  5. import numpy as np
  6.  
  7. # %%
  8. dataset_dict = {
  9.     'Outlook': ['sunny', 'sunny', 'overcast', 'rainy', 'rainy', 'rainy', 'overcast', 'sunny', 'sunny', 'rainy', 'sunny', 'overcast', 'overcast', 'sunny', 'rainy', 'sunny', 'overcast', 'overcast', 'rainy', 'rainy', 'overcast', 'sunny', 'sunny', 'rainy', 'rainy', 'overcast', 'sunny', 'overcast', 'overcast', 'rainy'],
  10.     'Temperature': [85.0, 80.0, 83.0, 70.0, 68.0, 65.0, 64.0, 72.0, 69.0, 75.0, 75.0, 72.0, 69.0, 81.0, 71.0, 81.0, 74.0, 76.0, 78.0, 82.0, 67.0, 83.0, 67.0, 79.0, 80.0, 81.0, 75.0, 85.0, 76.0, 79.0],
  11.     'Humidity': [85.0, 90.0, 78.0, 96.0, 80.0, 70.0, 65.0, 95.0, 70.0, 80.0, 90.0, 75.0, 88.0, 88.0, 92.0, 85.0, 75.0, 92.0, 90.0, 82.0, 67.0, 98.0, 80.0, 92.0, 90.0, 82.0, 95.0, 95.0, 93.0, 92.0],
  12.     'Wind': [False, True, False, False, False, True, True, False, False, False, True, True, False, True, True, False, False, True, False, False, True, True, False, False, True, True, False, True, False, False],
  13.     'Play': ['No', 'No', 'Yes', 'Yes', 'Yes', 'No', 'Yes', 'No', 'Yes', 'Yes', 'Yes', 'Yes', 'Yes', 'No', 'No', 'Yes', 'Yes', 'No', 'No', 'Yes', 'Yes', 'No', 'Yes', 'No', 'Yes', 'Yes', 'No', 'Yes', 'Yes', 'No']
  14. }
  15. # Create the DataFrame
  16. original_df = pd.DataFrame(dataset_dict)
  17.  
  18. # Print the DataFrame
  19. print(original_df)
  20.  
  21. # %%
  22. from sklearn.preprocessing import StandardScaler
  23.  
  24. # %%
  25. df = pd.get_dummies(original_df, columns=['Outlook'],prefix='',prefix_sep='',dtype=int)
  26. df['Wind'] = df['Wind'].astype(int)
  27. df['Play'] = (df['Play']=='Yes').astype(int)
  28. df = df[['sunny','rainy','overcast','Temperature','Humidity','Wind','Play']]
  29.  
  30. # %%
  31. X,y = df.drop(columns='Play'),df['Play']
  32. X_train,X_test,y_train,y_test = train_test_split(X,y,train_size = 0.5,shuffle=False)
  33.  
  34. # %%
  35. scaler = StandardScaler()
  36. float_cols = X_train.select_dtypes(include=['float64']).columns
  37. X_train[float_cols] = scaler.fit_transform(X_train[float_cols])
  38. X_test[float_cols] = scaler.transform(X_test[float_cols])
  39.  
  40. # %%
  41. print(pd.concat([X_train,y_train],axis=1).round(2),'\n')
  42. print(pd.concat([X_test,y_test],axis=1).round(2),'\n')
  43.  
  44. # %%
  45. k = 5
  46.  
  47. # %%
  48. from sklearn.neighbors import KNeighborsClassifier
  49.  
  50. # %%
  51. distance_metric = 'euclidean'
  52. knn_clf = KNeighborsClassifier(n_neighbors=k,metric=distance_metric)
  53. knn_clf.fit(X_train,y_train)
  54.  
  55. # %%
  56. y_pred = knn_clf.predict(X_test)
  57. print("Label    :",list(y_test))
  58. print("Prediction   :",list(y_pred))
  59.  
  60. # %%
  61. accuracy = accuracy_score(y_test,y_pred)
  62. print(f'accuracy: {accuracy*100}%')
  63.  
  64. # %%
  65. labels,predictions,accuracies = list(y_test),[],[]
  66.  
  67. # %%
  68. k_list = [3,5,7]
  69. for k in k_list:
  70.     knn_clf = KNeighborsClassifier(n_neighbors=k)
  71.     knn_clf.fit(X_train,y_train)
  72.     y_pred = knn_clf.predict(X_test)
  73.     predictions.append(list(y_pred))
  74.     accuracies.append(accuracy_score(y_test,y_pred)*100)
  75.  
  76. # %%
  77. df_predictions = pd.DataFrame({'Label':labels})
  78. for k, pred in zip(k_list,predictions):
  79.     df_predictions[f'k = {k}'] = pred
  80.  
  81. # %%
  82. df_accuracies = pd.DataFrame({'Accuracy ':accuracies},index=[f'k = {k}' for k in k_list]).T
  83.  
  84. # %%
  85. print(df_predictions)
  86. print(df_accuracies)
  87.  
  88.  
  89.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement