├── BASIC ├── SplitData.py └── SplitDataset.py ├── ConfusionMatrixTable.py ├── Face Recognition ├── Face.py ├── Kernel.py └── TuningParameter.py ├── K-Means └── KMeans.py ├── KNN ├── KNN-Diabetes.py ├── KNNDemo.py ├── MLModel.py └── diabetes.csv ├── Linear Regression ├── Binary.py ├── BinarySGD.py ├── MLPredictWeather.py └── Weather.csv ├── Naive Bay Classification ├── NaiveBay.py └── NaiveBayAdult.py ├── Neural Network ├── Characters.py └── MLP.py ├── PCA ├── PCABasic.py ├── PCAIris.py └── PCAMnist.py └── README.md /BASIC/SplitData.py: -------------------------------------------------------------------------------- 1 | from sklearn.datasets import load_iris 2 | from sklearn.model_selection import train_test_split 3 | iris_dataset=load_iris() 4 | 5 | x_t,x_s,y_t,y_s = train_test_split(iris_dataset['data'],iris_dataset['target'],random_state=0) 6 | 7 | print(x_t.shape) 8 | print(x_s.shape) -------------------------------------------------------------------------------- /BASIC/SplitDataset.py: -------------------------------------------------------------------------------- 1 | from sklearn.datasets import load_iris 2 | from sklearn.model_selection import train_test_split 3 | iris_dataset=load_iris() 4 | x_train,x_test,y_train,y_test = train_test_split(iris_dataset["data"],iris_dataset["target"],test_size=0.2,random_state=0) 5 | 6 | print(x_train.shape) 7 | print(x_test.shape) 8 | print(y_train.shape) 9 | print(y_test.shape) 10 | 11 | #150 12 | #train 80% = 120 13 | #test 20% = 30 -------------------------------------------------------------------------------- /ConfusionMatrixTable.py: -------------------------------------------------------------------------------- 1 | def displayConfusionMatrix(cm,cmap=plt.cm.GnBu): 2 | classes=["Other Number","Number 5"] 3 | plt.imshow(cm,interpolation='nearest',cmap=cmap) 4 | plt.title("Confusion Matrix") 5 | plt.colorbar() 6 | trick_marks=np.arange(len(classes)) 7 | plt.xticks(trick_marks,classes) 8 | plt.yticks(trick_marks,classes) 9 | thresh=cm.max()/2 10 | for i , j in itertools.product(range(cm.shape[0]),range(cm.shape[1])): 11 | plt.text(j,i,format(cm[i,j],'d'), 12 | horizontalalignment='center', 13 | color='white' if cm[i,j]>thresh else 'black') 14 | 15 | plt.tight_layout() 16 | plt.ylabel('Actually') 17 | plt.xlabel('Prediction') 18 | plt.show() -------------------------------------------------------------------------------- /Face Recognition/Face.py: -------------------------------------------------------------------------------- 1 | from sklearn.datasets import fetch_lfw_people 2 | import matplotlib.pyplot as plt 3 | from sklearn.svm import SVC 4 | from sklearn.decomposition import PCA 5 | from sklearn.pipeline import make_pipeline 6 | from sklearn.model_selection import train_test_split 7 | from sklearn.model_selection import GridSearchCV 8 | from sklearn.metrics import classification_report 9 | from sklearn.metrics import confusion_matrix 10 | import seaborn as sns 11 | faces=fetch_lfw_people(min_faces_per_person=60) 12 | 13 | # print(faces.target_names) 14 | # print(faces.images.shape) 15 | # fig,ax=plt.subplots(3,5) 16 | # for i,axi in enumerate(ax.flat): 17 | # axi.imshow(faces.images[i],cmap='bone') 18 | # axi.set(xticks=[],yticks=[]) 19 | # axi.set_ylabel(faces.target_names[faces.target[i]].split()[-1],color='black') 20 | # plt.show() 21 | 22 | pca=PCA(n_components=150,svd_solver='randomized', whiten=True) 23 | svc=SVC(kernel="rbf",class_weight="balanced") 24 | model=make_pipeline(pca,svc) 25 | x_train,x_test,y_train,y_test=train_test_split(faces.data,faces.target,random_state=45) 26 | 27 | #parameter 28 | param_grid={'svc__C':[1,5,10,50],'svc__gamma':[0.0001,0.005,0.001,0.005]} 29 | grid=GridSearchCV(model,param_grid) 30 | 31 | #train 32 | grid.fit(x_train,y_train) 33 | # print(grid.best_params_) 34 | # print(grid.best_estimator_) 35 | 36 | model=grid.best_estimator_ 37 | 38 | yfit=model.predict(x_test) 39 | # fig,ax=plt.subplots(4,6) 40 | # for i,axi in enumerate(ax.flat): 41 | # axi.imshow(x_test[i].reshape(62,47),cmap='bone') 42 | # axi.set(xticks=[],yticks=[]) 43 | # axi.set_ylabel(faces.target_names[yfit[i]].split()[-1], 44 | # color='black' if yfit[i] == y_test[i] else 'blue') 45 | # # fig.subtitle('Predicted Name') 46 | # plt.show() 47 | 48 | # print(classification_report(y_test,yfit,target_names=faces.target_names)) 49 | 50 | plt.figure(figsize=(9,9)) 51 | mat=confusion_matrix(y_test,yfit) 52 | sns.heatmap(mat.T,square=True, 53 | annot=True,fmt='d',cbar=False, 54 | cmap='viridis', 55 | xticklabels=faces.target_names, 56 | yticklabels=faces.target_names 57 | ) 58 | plt.xlabel('True Label') 59 | plt.ylabel('Predicted Label') 60 | plt.show() -------------------------------------------------------------------------------- /Face Recognition/Kernel.py: -------------------------------------------------------------------------------- 1 | from sklearn.datasets import make_blobs 2 | import numpy as np 3 | import matplotlib.pyplot as plt 4 | from sklearn.svm import SVC 5 | 6 | X,z = make_blobs(n_samples=100,n_features=2,cluster_std=4,centers=2,random_state=3) 7 | mx,my = np.meshgrid(np.linspace(X[:,0].min(),X[:,0].max(),200),np.linspace(X[:,1].min(),X[:,1].max(),200)) 8 | mX = np.stack([mx.ravel(),my.ravel()],1) 9 | plt.figure(figsize=[6,7]) 10 | kernel = ['rbf','poly','sigmoid','linear'] 11 | for i in range(4): 12 | svc = SVC(kernel=kernel[i]) 13 | svc.fit(X,z) 14 | mz = svc.predict(mX).reshape(200,200) 15 | plt.subplot(2,2,i+1,aspect=1,xlim=[X[:,0].min(),X[:,0].max()],ylim=[X[:,1].min(),X[:,1].max()]) 16 | plt.scatter(X[:,0],X[:,1],s=50,c=z,edgecolor='k',cmap='brg') 17 | plt.contourf(mx,my,mz,alpha=0.1,cmap='brg') 18 | plt.title(kernel[i]) 19 | plt.tight_layout() 20 | plt.show() -------------------------------------------------------------------------------- /Face Recognition/TuningParameter.py: -------------------------------------------------------------------------------- 1 | from sklearn.datasets import make_moons 2 | import numpy as np 3 | import matplotlib.pyplot as plt 4 | from sklearn.svm import SVC 5 | 6 | X,z = make_moons(n_samples=80,shuffle=0,noise=0.25,random_state=0) 7 | mx,my = np.meshgrid(np.linspace(X[:,0].min(),X[:,0].max(),200),np.linspace(X[:,1].min(),X[:,1].max(),200)) 8 | mX = np.stack([mx.ravel(),my.ravel()],1) 9 | plt.figure(figsize=[6.5,4.5]) 10 | for i,C in enumerate([1,5,10]): 11 | for j,gamma in enumerate([0.1,1,5]): 12 | svc = SVC(C=C,gamma=gamma) 13 | svc.fit(X,z) 14 | mz = svc.predict(mX).reshape(200,200) 15 | plt.subplot2grid((3,3),(i,j),xlim=[X[:,0].min(),X[:,0].max()],ylim=[X[:,1].min(),X[:,1].max()],xticks=[],yticks=[],aspect=1) 16 | plt.scatter(X[:,0],X[:,1],s=10,c=z,edgecolor='k',cmap='brg') 17 | plt.contourf(mx,my,mz,alpha=0.1,cmap='brg') 18 | plt.title('C=%.1f,$\\gamma$=%.1f'%(C,gamma),size=8) 19 | plt.tight_layout() 20 | plt.show() -------------------------------------------------------------------------------- /K-Means/KMeans.py: -------------------------------------------------------------------------------- 1 | from sklearn.datasets import make_blobs 2 | import matplotlib.pyplot as plt 3 | from sklearn.cluster import KMeans 4 | 5 | x,y=make_blobs(n_samples=300,centers=4,cluster_std=0.5,random_state=0) 6 | 7 | #new point 8 | x_test,y_test=make_blobs(n_samples=10,centers=4,cluster_std=0.5,random_state=0) 9 | 10 | # print(x[:,1]) 11 | # print(y.shape) 12 | model=KMeans(n_clusters=4) 13 | model.fit(x) 14 | y_pred=model.predict(x) 15 | y_pred_new=model.predict(x_test) 16 | centers=model.cluster_centers_ 17 | 18 | # print(centers) 19 | plt.scatter(x[:,0],x[:,1],c=y_pred) 20 | plt.scatter(x_test[:,0],x_test[:,1],c=y_pred_new,s=120) 21 | plt.scatter(centers[0,0],centers[0,1],c='blue',label="Centroid 1") 22 | plt.scatter(centers[1,0],centers[1,1],c='green',label="Centroid 2") 23 | plt.scatter(centers[2,0],centers[2,1],c='red',label="Centroid 3") 24 | plt.scatter(centers[3,0],centers[3,1],c='black',label="Centroid 4") 25 | plt.legend(frameon=True) 26 | plt.show() -------------------------------------------------------------------------------- /KNN/KNN-Diabetes.py: -------------------------------------------------------------------------------- 1 | from sklearn.model_selection import train_test_split 2 | from sklearn.neighbors import KNeighborsClassifier 3 | from sklearn.metrics import classification_report,confusion_matrix 4 | import numpy as np 5 | import pandas as pd 6 | import matplotlib.pyplot as plt 7 | 8 | 9 | #Read Data 10 | df=pd.read_csv("diabetes.csv") 11 | # data 12 | x=df.drop("Outcome",axis=1).values 13 | # outcome data 14 | y=df['Outcome'].values 15 | 16 | x_train,x_test,y_train,y_test=train_test_split(x,y,test_size=0.4) 17 | 18 | knn=KNeighborsClassifier(n_neighbors=8) 19 | #train 20 | knn.fit(x_train,y_train) 21 | 22 | #prediction 23 | y_pred=knn.predict(x_test) 24 | 25 | print(pd.crosstab(y_test,y_pred,rownames=['Actually'],colnames=['Prediction'],margins=True)) 26 | 27 | -------------------------------------------------------------------------------- /KNN/KNNDemo.py: -------------------------------------------------------------------------------- 1 | from sklearn.datasets import load_iris 2 | from sklearn.model_selection import train_test_split 3 | from sklearn.neighbors import KNeighborsClassifier 4 | from sklearn.metrics import classification_report,accuracy_score 5 | 6 | iris_dataset=load_iris() 7 | x_train,x_test,y_train,y_test=train_test_split(iris_dataset['data'],iris_dataset['target'],test_size=0.4,random_state=0) 8 | 9 | 10 | #Model 11 | knn=KNeighborsClassifier(n_neighbors=1) 12 | 13 | #training 14 | knn.fit(x_train,y_train) 15 | 16 | #prediction 17 | y_pred=knn.predict(x_test) 18 | 19 | # print(classification_report(y_test,y_pred,target_names=iris_dataset['target_names'])) 20 | print("ความแม่นยำ = ",accuracy_score(y_test,y_pred)*100) -------------------------------------------------------------------------------- /KNN/MLModel.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | import matplotlib.pyplot as plt 3 | from sklearn.linear_model import LinearRegression 4 | rng=np.random 5 | 6 | #การจำลองข้อมูล 7 | x=rng.rand(50)*10 8 | y=2*x+rng.randn(50) 9 | 10 | #linear regression model 11 | model=LinearRegression() 12 | x_new =x.reshape(-1,1) 13 | 14 | #train 15 | model.fit(x_new,y) 16 | 17 | #test model 18 | xfit=np.linspace(-1,11) 19 | xfit_new=xfit.reshape(-1,1) 20 | 21 | yfit=model.predict(xfit_new) 22 | 23 | #analysis model & result 24 | plt.scatter(x,y) 25 | # plt.plot(xfit,yfit) 26 | plt.show() 27 | 28 | -------------------------------------------------------------------------------- /KNN/diabetes.csv: -------------------------------------------------------------------------------- 1 | Pregnancies,Glucose,BloodPressure,SkinThickness,Insulin,BMI,DiabetesPedigreeFunction,Age,Outcome 2 | 6,148,72,35,0,33.6,0.627,50,1 3 | 1,85,66,29,0,26.6,0.351,31,0 4 | 8,183,64,0,0,23.3,0.672,32,1 5 | 1,89,66,23,94,28.1,0.167,21,0 6 | 0,137,40,35,168,43.1,2.288,33,1 7 | 5,116,74,0,0,25.6,0.201,30,0 8 | 3,78,50,32,88,31,0.248,26,1 9 | 10,115,0,0,0,35.3,0.134,29,0 10 | 2,197,70,45,543,30.5,0.158,53,1 11 | 8,125,96,0,0,0,0.232,54,1 12 | 4,110,92,0,0,37.6,0.191,30,0 13 | 10,168,74,0,0,38,0.537,34,1 14 | 10,139,80,0,0,27.1,1.441,57,0 15 | 1,189,60,23,846,30.1,0.398,59,1 16 | 5,166,72,19,175,25.8,0.587,51,1 17 | 7,100,0,0,0,30,0.484,32,1 18 | 0,118,84,47,230,45.8,0.551,31,1 19 | 7,107,74,0,0,29.6,0.254,31,1 20 | 1,103,30,38,83,43.3,0.183,33,0 21 | 1,115,70,30,96,34.6,0.529,32,1 22 | 3,126,88,41,235,39.3,0.704,27,0 23 | 8,99,84,0,0,35.4,0.388,50,0 24 | 7,196,90,0,0,39.8,0.451,41,1 25 | 9,119,80,35,0,29,0.263,29,1 26 | 11,143,94,33,146,36.6,0.254,51,1 27 | 10,125,70,26,115,31.1,0.205,41,1 28 | 7,147,76,0,0,39.4,0.257,43,1 29 | 1,97,66,15,140,23.2,0.487,22,0 30 | 13,145,82,19,110,22.2,0.245,57,0 31 | 5,117,92,0,0,34.1,0.337,38,0 32 | 5,109,75,26,0,36,0.546,60,0 33 | 3,158,76,36,245,31.6,0.851,28,1 34 | 3,88,58,11,54,24.8,0.267,22,0 35 | 6,92,92,0,0,19.9,0.188,28,0 36 | 10,122,78,31,0,27.6,0.512,45,0 37 | 4,103,60,33,192,24,0.966,33,0 38 | 11,138,76,0,0,33.2,0.42,35,0 39 | 9,102,76,37,0,32.9,0.665,46,1 40 | 2,90,68,42,0,38.2,0.503,27,1 41 | 4,111,72,47,207,37.1,1.39,56,1 42 | 3,180,64,25,70,34,0.271,26,0 43 | 7,133,84,0,0,40.2,0.696,37,0 44 | 7,106,92,18,0,22.7,0.235,48,0 45 | 9,171,110,24,240,45.4,0.721,54,1 46 | 7,159,64,0,0,27.4,0.294,40,0 47 | 0,180,66,39,0,42,1.893,25,1 48 | 1,146,56,0,0,29.7,0.564,29,0 49 | 2,71,70,27,0,28,0.586,22,0 50 | 7,103,66,32,0,39.1,0.344,31,1 51 | 7,105,0,0,0,0,0.305,24,0 52 | 1,103,80,11,82,19.4,0.491,22,0 53 | 1,101,50,15,36,24.2,0.526,26,0 54 | 5,88,66,21,23,24.4,0.342,30,0 55 | 8,176,90,34,300,33.7,0.467,58,1 56 | 7,150,66,42,342,34.7,0.718,42,0 57 | 1,73,50,10,0,23,0.248,21,0 58 | 7,187,68,39,304,37.7,0.254,41,1 59 | 0,100,88,60,110,46.8,0.962,31,0 60 | 0,146,82,0,0,40.5,1.781,44,0 61 | 0,105,64,41,142,41.5,0.173,22,0 62 | 2,84,0,0,0,0,0.304,21,0 63 | 8,133,72,0,0,32.9,0.27,39,1 64 | 5,44,62,0,0,25,0.587,36,0 65 | 2,141,58,34,128,25.4,0.699,24,0 66 | 7,114,66,0,0,32.8,0.258,42,1 67 | 5,99,74,27,0,29,0.203,32,0 68 | 0,109,88,30,0,32.5,0.855,38,1 69 | 2,109,92,0,0,42.7,0.845,54,0 70 | 1,95,66,13,38,19.6,0.334,25,0 71 | 4,146,85,27,100,28.9,0.189,27,0 72 | 2,100,66,20,90,32.9,0.867,28,1 73 | 5,139,64,35,140,28.6,0.411,26,0 74 | 13,126,90,0,0,43.4,0.583,42,1 75 | 4,129,86,20,270,35.1,0.231,23,0 76 | 1,79,75,30,0,32,0.396,22,0 77 | 1,0,48,20,0,24.7,0.14,22,0 78 | 7,62,78,0,0,32.6,0.391,41,0 79 | 5,95,72,33,0,37.7,0.37,27,0 80 | 0,131,0,0,0,43.2,0.27,26,1 81 | 2,112,66,22,0,25,0.307,24,0 82 | 3,113,44,13,0,22.4,0.14,22,0 83 | 2,74,0,0,0,0,0.102,22,0 84 | 7,83,78,26,71,29.3,0.767,36,0 85 | 0,101,65,28,0,24.6,0.237,22,0 86 | 5,137,108,0,0,48.8,0.227,37,1 87 | 2,110,74,29,125,32.4,0.698,27,0 88 | 13,106,72,54,0,36.6,0.178,45,0 89 | 2,100,68,25,71,38.5,0.324,26,0 90 | 15,136,70,32,110,37.1,0.153,43,1 91 | 1,107,68,19,0,26.5,0.165,24,0 92 | 1,80,55,0,0,19.1,0.258,21,0 93 | 4,123,80,15,176,32,0.443,34,0 94 | 7,81,78,40,48,46.7,0.261,42,0 95 | 4,134,72,0,0,23.8,0.277,60,1 96 | 2,142,82,18,64,24.7,0.761,21,0 97 | 6,144,72,27,228,33.9,0.255,40,0 98 | 2,92,62,28,0,31.6,0.13,24,0 99 | 1,71,48,18,76,20.4,0.323,22,0 100 | 6,93,50,30,64,28.7,0.356,23,0 101 | 1,122,90,51,220,49.7,0.325,31,1 102 | 1,163,72,0,0,39,1.222,33,1 103 | 1,151,60,0,0,26.1,0.179,22,0 104 | 0,125,96,0,0,22.5,0.262,21,0 105 | 1,81,72,18,40,26.6,0.283,24,0 106 | 2,85,65,0,0,39.6,0.93,27,0 107 | 1,126,56,29,152,28.7,0.801,21,0 108 | 1,96,122,0,0,22.4,0.207,27,0 109 | 4,144,58,28,140,29.5,0.287,37,0 110 | 3,83,58,31,18,34.3,0.336,25,0 111 | 0,95,85,25,36,37.4,0.247,24,1 112 | 3,171,72,33,135,33.3,0.199,24,1 113 | 8,155,62,26,495,34,0.543,46,1 114 | 1,89,76,34,37,31.2,0.192,23,0 115 | 4,76,62,0,0,34,0.391,25,0 116 | 7,160,54,32,175,30.5,0.588,39,1 117 | 4,146,92,0,0,31.2,0.539,61,1 118 | 5,124,74,0,0,34,0.22,38,1 119 | 5,78,48,0,0,33.7,0.654,25,0 120 | 4,97,60,23,0,28.2,0.443,22,0 121 | 4,99,76,15,51,23.2,0.223,21,0 122 | 0,162,76,56,100,53.2,0.759,25,1 123 | 6,111,64,39,0,34.2,0.26,24,0 124 | 2,107,74,30,100,33.6,0.404,23,0 125 | 5,132,80,0,0,26.8,0.186,69,0 126 | 0,113,76,0,0,33.3,0.278,23,1 127 | 1,88,30,42,99,55,0.496,26,1 128 | 3,120,70,30,135,42.9,0.452,30,0 129 | 1,118,58,36,94,33.3,0.261,23,0 130 | 1,117,88,24,145,34.5,0.403,40,1 131 | 0,105,84,0,0,27.9,0.741,62,1 132 | 4,173,70,14,168,29.7,0.361,33,1 133 | 9,122,56,0,0,33.3,1.114,33,1 134 | 3,170,64,37,225,34.5,0.356,30,1 135 | 8,84,74,31,0,38.3,0.457,39,0 136 | 2,96,68,13,49,21.1,0.647,26,0 137 | 2,125,60,20,140,33.8,0.088,31,0 138 | 0,100,70,26,50,30.8,0.597,21,0 139 | 0,93,60,25,92,28.7,0.532,22,0 140 | 0,129,80,0,0,31.2,0.703,29,0 141 | 5,105,72,29,325,36.9,0.159,28,0 142 | 3,128,78,0,0,21.1,0.268,55,0 143 | 5,106,82,30,0,39.5,0.286,38,0 144 | 2,108,52,26,63,32.5,0.318,22,0 145 | 10,108,66,0,0,32.4,0.272,42,1 146 | 4,154,62,31,284,32.8,0.237,23,0 147 | 0,102,75,23,0,0,0.572,21,0 148 | 9,57,80,37,0,32.8,0.096,41,0 149 | 2,106,64,35,119,30.5,1.4,34,0 150 | 5,147,78,0,0,33.7,0.218,65,0 151 | 2,90,70,17,0,27.3,0.085,22,0 152 | 1,136,74,50,204,37.4,0.399,24,0 153 | 4,114,65,0,0,21.9,0.432,37,0 154 | 9,156,86,28,155,34.3,1.189,42,1 155 | 1,153,82,42,485,40.6,0.687,23,0 156 | 8,188,78,0,0,47.9,0.137,43,1 157 | 7,152,88,44,0,50,0.337,36,1 158 | 2,99,52,15,94,24.6,0.637,21,0 159 | 1,109,56,21,135,25.2,0.833,23,0 160 | 2,88,74,19,53,29,0.229,22,0 161 | 17,163,72,41,114,40.9,0.817,47,1 162 | 4,151,90,38,0,29.7,0.294,36,0 163 | 7,102,74,40,105,37.2,0.204,45,0 164 | 0,114,80,34,285,44.2,0.167,27,0 165 | 2,100,64,23,0,29.7,0.368,21,0 166 | 0,131,88,0,0,31.6,0.743,32,1 167 | 6,104,74,18,156,29.9,0.722,41,1 168 | 3,148,66,25,0,32.5,0.256,22,0 169 | 4,120,68,0,0,29.6,0.709,34,0 170 | 4,110,66,0,0,31.9,0.471,29,0 171 | 3,111,90,12,78,28.4,0.495,29,0 172 | 6,102,82,0,0,30.8,0.18,36,1 173 | 6,134,70,23,130,35.4,0.542,29,1 174 | 2,87,0,23,0,28.9,0.773,25,0 175 | 1,79,60,42,48,43.5,0.678,23,0 176 | 2,75,64,24,55,29.7,0.37,33,0 177 | 8,179,72,42,130,32.7,0.719,36,1 178 | 6,85,78,0,0,31.2,0.382,42,0 179 | 0,129,110,46,130,67.1,0.319,26,1 180 | 5,143,78,0,0,45,0.19,47,0 181 | 5,130,82,0,0,39.1,0.956,37,1 182 | 6,87,80,0,0,23.2,0.084,32,0 183 | 0,119,64,18,92,34.9,0.725,23,0 184 | 1,0,74,20,23,27.7,0.299,21,0 185 | 5,73,60,0,0,26.8,0.268,27,0 186 | 4,141,74,0,0,27.6,0.244,40,0 187 | 7,194,68,28,0,35.9,0.745,41,1 188 | 8,181,68,36,495,30.1,0.615,60,1 189 | 1,128,98,41,58,32,1.321,33,1 190 | 8,109,76,39,114,27.9,0.64,31,1 191 | 5,139,80,35,160,31.6,0.361,25,1 192 | 3,111,62,0,0,22.6,0.142,21,0 193 | 9,123,70,44,94,33.1,0.374,40,0 194 | 7,159,66,0,0,30.4,0.383,36,1 195 | 11,135,0,0,0,52.3,0.578,40,1 196 | 8,85,55,20,0,24.4,0.136,42,0 197 | 5,158,84,41,210,39.4,0.395,29,1 198 | 1,105,58,0,0,24.3,0.187,21,0 199 | 3,107,62,13,48,22.9,0.678,23,1 200 | 4,109,64,44,99,34.8,0.905,26,1 201 | 4,148,60,27,318,30.9,0.15,29,1 202 | 0,113,80,16,0,31,0.874,21,0 203 | 1,138,82,0,0,40.1,0.236,28,0 204 | 0,108,68,20,0,27.3,0.787,32,0 205 | 2,99,70,16,44,20.4,0.235,27,0 206 | 6,103,72,32,190,37.7,0.324,55,0 207 | 5,111,72,28,0,23.9,0.407,27,0 208 | 8,196,76,29,280,37.5,0.605,57,1 209 | 5,162,104,0,0,37.7,0.151,52,1 210 | 1,96,64,27,87,33.2,0.289,21,0 211 | 7,184,84,33,0,35.5,0.355,41,1 212 | 2,81,60,22,0,27.7,0.29,25,0 213 | 0,147,85,54,0,42.8,0.375,24,0 214 | 7,179,95,31,0,34.2,0.164,60,0 215 | 0,140,65,26,130,42.6,0.431,24,1 216 | 9,112,82,32,175,34.2,0.26,36,1 217 | 12,151,70,40,271,41.8,0.742,38,1 218 | 5,109,62,41,129,35.8,0.514,25,1 219 | 6,125,68,30,120,30,0.464,32,0 220 | 5,85,74,22,0,29,1.224,32,1 221 | 5,112,66,0,0,37.8,0.261,41,1 222 | 0,177,60,29,478,34.6,1.072,21,1 223 | 2,158,90,0,0,31.6,0.805,66,1 224 | 7,119,0,0,0,25.2,0.209,37,0 225 | 7,142,60,33,190,28.8,0.687,61,0 226 | 1,100,66,15,56,23.6,0.666,26,0 227 | 1,87,78,27,32,34.6,0.101,22,0 228 | 0,101,76,0,0,35.7,0.198,26,0 229 | 3,162,52,38,0,37.2,0.652,24,1 230 | 4,197,70,39,744,36.7,2.329,31,0 231 | 0,117,80,31,53,45.2,0.089,24,0 232 | 4,142,86,0,0,44,0.645,22,1 233 | 6,134,80,37,370,46.2,0.238,46,1 234 | 1,79,80,25,37,25.4,0.583,22,0 235 | 4,122,68,0,0,35,0.394,29,0 236 | 3,74,68,28,45,29.7,0.293,23,0 237 | 4,171,72,0,0,43.6,0.479,26,1 238 | 7,181,84,21,192,35.9,0.586,51,1 239 | 0,179,90,27,0,44.1,0.686,23,1 240 | 9,164,84,21,0,30.8,0.831,32,1 241 | 0,104,76,0,0,18.4,0.582,27,0 242 | 1,91,64,24,0,29.2,0.192,21,0 243 | 4,91,70,32,88,33.1,0.446,22,0 244 | 3,139,54,0,0,25.6,0.402,22,1 245 | 6,119,50,22,176,27.1,1.318,33,1 246 | 2,146,76,35,194,38.2,0.329,29,0 247 | 9,184,85,15,0,30,1.213,49,1 248 | 10,122,68,0,0,31.2,0.258,41,0 249 | 0,165,90,33,680,52.3,0.427,23,0 250 | 9,124,70,33,402,35.4,0.282,34,0 251 | 1,111,86,19,0,30.1,0.143,23,0 252 | 9,106,52,0,0,31.2,0.38,42,0 253 | 2,129,84,0,0,28,0.284,27,0 254 | 2,90,80,14,55,24.4,0.249,24,0 255 | 0,86,68,32,0,35.8,0.238,25,0 256 | 12,92,62,7,258,27.6,0.926,44,1 257 | 1,113,64,35,0,33.6,0.543,21,1 258 | 3,111,56,39,0,30.1,0.557,30,0 259 | 2,114,68,22,0,28.7,0.092,25,0 260 | 1,193,50,16,375,25.9,0.655,24,0 261 | 11,155,76,28,150,33.3,1.353,51,1 262 | 3,191,68,15,130,30.9,0.299,34,0 263 | 3,141,0,0,0,30,0.761,27,1 264 | 4,95,70,32,0,32.1,0.612,24,0 265 | 3,142,80,15,0,32.4,0.2,63,0 266 | 4,123,62,0,0,32,0.226,35,1 267 | 5,96,74,18,67,33.6,0.997,43,0 268 | 0,138,0,0,0,36.3,0.933,25,1 269 | 2,128,64,42,0,40,1.101,24,0 270 | 0,102,52,0,0,25.1,0.078,21,0 271 | 2,146,0,0,0,27.5,0.24,28,1 272 | 10,101,86,37,0,45.6,1.136,38,1 273 | 2,108,62,32,56,25.2,0.128,21,0 274 | 3,122,78,0,0,23,0.254,40,0 275 | 1,71,78,50,45,33.2,0.422,21,0 276 | 13,106,70,0,0,34.2,0.251,52,0 277 | 2,100,70,52,57,40.5,0.677,25,0 278 | 7,106,60,24,0,26.5,0.296,29,1 279 | 0,104,64,23,116,27.8,0.454,23,0 280 | 5,114,74,0,0,24.9,0.744,57,0 281 | 2,108,62,10,278,25.3,0.881,22,0 282 | 0,146,70,0,0,37.9,0.334,28,1 283 | 10,129,76,28,122,35.9,0.28,39,0 284 | 7,133,88,15,155,32.4,0.262,37,0 285 | 7,161,86,0,0,30.4,0.165,47,1 286 | 2,108,80,0,0,27,0.259,52,1 287 | 7,136,74,26,135,26,0.647,51,0 288 | 5,155,84,44,545,38.7,0.619,34,0 289 | 1,119,86,39,220,45.6,0.808,29,1 290 | 4,96,56,17,49,20.8,0.34,26,0 291 | 5,108,72,43,75,36.1,0.263,33,0 292 | 0,78,88,29,40,36.9,0.434,21,0 293 | 0,107,62,30,74,36.6,0.757,25,1 294 | 2,128,78,37,182,43.3,1.224,31,1 295 | 1,128,48,45,194,40.5,0.613,24,1 296 | 0,161,50,0,0,21.9,0.254,65,0 297 | 6,151,62,31,120,35.5,0.692,28,0 298 | 2,146,70,38,360,28,0.337,29,1 299 | 0,126,84,29,215,30.7,0.52,24,0 300 | 14,100,78,25,184,36.6,0.412,46,1 301 | 8,112,72,0,0,23.6,0.84,58,0 302 | 0,167,0,0,0,32.3,0.839,30,1 303 | 2,144,58,33,135,31.6,0.422,25,1 304 | 5,77,82,41,42,35.8,0.156,35,0 305 | 5,115,98,0,0,52.9,0.209,28,1 306 | 3,150,76,0,0,21,0.207,37,0 307 | 2,120,76,37,105,39.7,0.215,29,0 308 | 10,161,68,23,132,25.5,0.326,47,1 309 | 0,137,68,14,148,24.8,0.143,21,0 310 | 0,128,68,19,180,30.5,1.391,25,1 311 | 2,124,68,28,205,32.9,0.875,30,1 312 | 6,80,66,30,0,26.2,0.313,41,0 313 | 0,106,70,37,148,39.4,0.605,22,0 314 | 2,155,74,17,96,26.6,0.433,27,1 315 | 3,113,50,10,85,29.5,0.626,25,0 316 | 7,109,80,31,0,35.9,1.127,43,1 317 | 2,112,68,22,94,34.1,0.315,26,0 318 | 3,99,80,11,64,19.3,0.284,30,0 319 | 3,182,74,0,0,30.5,0.345,29,1 320 | 3,115,66,39,140,38.1,0.15,28,0 321 | 6,194,78,0,0,23.5,0.129,59,1 322 | 4,129,60,12,231,27.5,0.527,31,0 323 | 3,112,74,30,0,31.6,0.197,25,1 324 | 0,124,70,20,0,27.4,0.254,36,1 325 | 13,152,90,33,29,26.8,0.731,43,1 326 | 2,112,75,32,0,35.7,0.148,21,0 327 | 1,157,72,21,168,25.6,0.123,24,0 328 | 1,122,64,32,156,35.1,0.692,30,1 329 | 10,179,70,0,0,35.1,0.2,37,0 330 | 2,102,86,36,120,45.5,0.127,23,1 331 | 6,105,70,32,68,30.8,0.122,37,0 332 | 8,118,72,19,0,23.1,1.476,46,0 333 | 2,87,58,16,52,32.7,0.166,25,0 334 | 1,180,0,0,0,43.3,0.282,41,1 335 | 12,106,80,0,0,23.6,0.137,44,0 336 | 1,95,60,18,58,23.9,0.26,22,0 337 | 0,165,76,43,255,47.9,0.259,26,0 338 | 0,117,0,0,0,33.8,0.932,44,0 339 | 5,115,76,0,0,31.2,0.343,44,1 340 | 9,152,78,34,171,34.2,0.893,33,1 341 | 7,178,84,0,0,39.9,0.331,41,1 342 | 1,130,70,13,105,25.9,0.472,22,0 343 | 1,95,74,21,73,25.9,0.673,36,0 344 | 1,0,68,35,0,32,0.389,22,0 345 | 5,122,86,0,0,34.7,0.29,33,0 346 | 8,95,72,0,0,36.8,0.485,57,0 347 | 8,126,88,36,108,38.5,0.349,49,0 348 | 1,139,46,19,83,28.7,0.654,22,0 349 | 3,116,0,0,0,23.5,0.187,23,0 350 | 3,99,62,19,74,21.8,0.279,26,0 351 | 5,0,80,32,0,41,0.346,37,1 352 | 4,92,80,0,0,42.2,0.237,29,0 353 | 4,137,84,0,0,31.2,0.252,30,0 354 | 3,61,82,28,0,34.4,0.243,46,0 355 | 1,90,62,12,43,27.2,0.58,24,0 356 | 3,90,78,0,0,42.7,0.559,21,0 357 | 9,165,88,0,0,30.4,0.302,49,1 358 | 1,125,50,40,167,33.3,0.962,28,1 359 | 13,129,0,30,0,39.9,0.569,44,1 360 | 12,88,74,40,54,35.3,0.378,48,0 361 | 1,196,76,36,249,36.5,0.875,29,1 362 | 5,189,64,33,325,31.2,0.583,29,1 363 | 5,158,70,0,0,29.8,0.207,63,0 364 | 5,103,108,37,0,39.2,0.305,65,0 365 | 4,146,78,0,0,38.5,0.52,67,1 366 | 4,147,74,25,293,34.9,0.385,30,0 367 | 5,99,54,28,83,34,0.499,30,0 368 | 6,124,72,0,0,27.6,0.368,29,1 369 | 0,101,64,17,0,21,0.252,21,0 370 | 3,81,86,16,66,27.5,0.306,22,0 371 | 1,133,102,28,140,32.8,0.234,45,1 372 | 3,173,82,48,465,38.4,2.137,25,1 373 | 0,118,64,23,89,0,1.731,21,0 374 | 0,84,64,22,66,35.8,0.545,21,0 375 | 2,105,58,40,94,34.9,0.225,25,0 376 | 2,122,52,43,158,36.2,0.816,28,0 377 | 12,140,82,43,325,39.2,0.528,58,1 378 | 0,98,82,15,84,25.2,0.299,22,0 379 | 1,87,60,37,75,37.2,0.509,22,0 380 | 4,156,75,0,0,48.3,0.238,32,1 381 | 0,93,100,39,72,43.4,1.021,35,0 382 | 1,107,72,30,82,30.8,0.821,24,0 383 | 0,105,68,22,0,20,0.236,22,0 384 | 1,109,60,8,182,25.4,0.947,21,0 385 | 1,90,62,18,59,25.1,1.268,25,0 386 | 1,125,70,24,110,24.3,0.221,25,0 387 | 1,119,54,13,50,22.3,0.205,24,0 388 | 5,116,74,29,0,32.3,0.66,35,1 389 | 8,105,100,36,0,43.3,0.239,45,1 390 | 5,144,82,26,285,32,0.452,58,1 391 | 3,100,68,23,81,31.6,0.949,28,0 392 | 1,100,66,29,196,32,0.444,42,0 393 | 5,166,76,0,0,45.7,0.34,27,1 394 | 1,131,64,14,415,23.7,0.389,21,0 395 | 4,116,72,12,87,22.1,0.463,37,0 396 | 4,158,78,0,0,32.9,0.803,31,1 397 | 2,127,58,24,275,27.7,1.6,25,0 398 | 3,96,56,34,115,24.7,0.944,39,0 399 | 0,131,66,40,0,34.3,0.196,22,1 400 | 3,82,70,0,0,21.1,0.389,25,0 401 | 3,193,70,31,0,34.9,0.241,25,1 402 | 4,95,64,0,0,32,0.161,31,1 403 | 6,137,61,0,0,24.2,0.151,55,0 404 | 5,136,84,41,88,35,0.286,35,1 405 | 9,72,78,25,0,31.6,0.28,38,0 406 | 5,168,64,0,0,32.9,0.135,41,1 407 | 2,123,48,32,165,42.1,0.52,26,0 408 | 4,115,72,0,0,28.9,0.376,46,1 409 | 0,101,62,0,0,21.9,0.336,25,0 410 | 8,197,74,0,0,25.9,1.191,39,1 411 | 1,172,68,49,579,42.4,0.702,28,1 412 | 6,102,90,39,0,35.7,0.674,28,0 413 | 1,112,72,30,176,34.4,0.528,25,0 414 | 1,143,84,23,310,42.4,1.076,22,0 415 | 1,143,74,22,61,26.2,0.256,21,0 416 | 0,138,60,35,167,34.6,0.534,21,1 417 | 3,173,84,33,474,35.7,0.258,22,1 418 | 1,97,68,21,0,27.2,1.095,22,0 419 | 4,144,82,32,0,38.5,0.554,37,1 420 | 1,83,68,0,0,18.2,0.624,27,0 421 | 3,129,64,29,115,26.4,0.219,28,1 422 | 1,119,88,41,170,45.3,0.507,26,0 423 | 2,94,68,18,76,26,0.561,21,0 424 | 0,102,64,46,78,40.6,0.496,21,0 425 | 2,115,64,22,0,30.8,0.421,21,0 426 | 8,151,78,32,210,42.9,0.516,36,1 427 | 4,184,78,39,277,37,0.264,31,1 428 | 0,94,0,0,0,0,0.256,25,0 429 | 1,181,64,30,180,34.1,0.328,38,1 430 | 0,135,94,46,145,40.6,0.284,26,0 431 | 1,95,82,25,180,35,0.233,43,1 432 | 2,99,0,0,0,22.2,0.108,23,0 433 | 3,89,74,16,85,30.4,0.551,38,0 434 | 1,80,74,11,60,30,0.527,22,0 435 | 2,139,75,0,0,25.6,0.167,29,0 436 | 1,90,68,8,0,24.5,1.138,36,0 437 | 0,141,0,0,0,42.4,0.205,29,1 438 | 12,140,85,33,0,37.4,0.244,41,0 439 | 5,147,75,0,0,29.9,0.434,28,0 440 | 1,97,70,15,0,18.2,0.147,21,0 441 | 6,107,88,0,0,36.8,0.727,31,0 442 | 0,189,104,25,0,34.3,0.435,41,1 443 | 2,83,66,23,50,32.2,0.497,22,0 444 | 4,117,64,27,120,33.2,0.23,24,0 445 | 8,108,70,0,0,30.5,0.955,33,1 446 | 4,117,62,12,0,29.7,0.38,30,1 447 | 0,180,78,63,14,59.4,2.42,25,1 448 | 1,100,72,12,70,25.3,0.658,28,0 449 | 0,95,80,45,92,36.5,0.33,26,0 450 | 0,104,64,37,64,33.6,0.51,22,1 451 | 0,120,74,18,63,30.5,0.285,26,0 452 | 1,82,64,13,95,21.2,0.415,23,0 453 | 2,134,70,0,0,28.9,0.542,23,1 454 | 0,91,68,32,210,39.9,0.381,25,0 455 | 2,119,0,0,0,19.6,0.832,72,0 456 | 2,100,54,28,105,37.8,0.498,24,0 457 | 14,175,62,30,0,33.6,0.212,38,1 458 | 1,135,54,0,0,26.7,0.687,62,0 459 | 5,86,68,28,71,30.2,0.364,24,0 460 | 10,148,84,48,237,37.6,1.001,51,1 461 | 9,134,74,33,60,25.9,0.46,81,0 462 | 9,120,72,22,56,20.8,0.733,48,0 463 | 1,71,62,0,0,21.8,0.416,26,0 464 | 8,74,70,40,49,35.3,0.705,39,0 465 | 5,88,78,30,0,27.6,0.258,37,0 466 | 10,115,98,0,0,24,1.022,34,0 467 | 0,124,56,13,105,21.8,0.452,21,0 468 | 0,74,52,10,36,27.8,0.269,22,0 469 | 0,97,64,36,100,36.8,0.6,25,0 470 | 8,120,0,0,0,30,0.183,38,1 471 | 6,154,78,41,140,46.1,0.571,27,0 472 | 1,144,82,40,0,41.3,0.607,28,0 473 | 0,137,70,38,0,33.2,0.17,22,0 474 | 0,119,66,27,0,38.8,0.259,22,0 475 | 7,136,90,0,0,29.9,0.21,50,0 476 | 4,114,64,0,0,28.9,0.126,24,0 477 | 0,137,84,27,0,27.3,0.231,59,0 478 | 2,105,80,45,191,33.7,0.711,29,1 479 | 7,114,76,17,110,23.8,0.466,31,0 480 | 8,126,74,38,75,25.9,0.162,39,0 481 | 4,132,86,31,0,28,0.419,63,0 482 | 3,158,70,30,328,35.5,0.344,35,1 483 | 0,123,88,37,0,35.2,0.197,29,0 484 | 4,85,58,22,49,27.8,0.306,28,0 485 | 0,84,82,31,125,38.2,0.233,23,0 486 | 0,145,0,0,0,44.2,0.63,31,1 487 | 0,135,68,42,250,42.3,0.365,24,1 488 | 1,139,62,41,480,40.7,0.536,21,0 489 | 0,173,78,32,265,46.5,1.159,58,0 490 | 4,99,72,17,0,25.6,0.294,28,0 491 | 8,194,80,0,0,26.1,0.551,67,0 492 | 2,83,65,28,66,36.8,0.629,24,0 493 | 2,89,90,30,0,33.5,0.292,42,0 494 | 4,99,68,38,0,32.8,0.145,33,0 495 | 4,125,70,18,122,28.9,1.144,45,1 496 | 3,80,0,0,0,0,0.174,22,0 497 | 6,166,74,0,0,26.6,0.304,66,0 498 | 5,110,68,0,0,26,0.292,30,0 499 | 2,81,72,15,76,30.1,0.547,25,0 500 | 7,195,70,33,145,25.1,0.163,55,1 501 | 6,154,74,32,193,29.3,0.839,39,0 502 | 2,117,90,19,71,25.2,0.313,21,0 503 | 3,84,72,32,0,37.2,0.267,28,0 504 | 6,0,68,41,0,39,0.727,41,1 505 | 7,94,64,25,79,33.3,0.738,41,0 506 | 3,96,78,39,0,37.3,0.238,40,0 507 | 10,75,82,0,0,33.3,0.263,38,0 508 | 0,180,90,26,90,36.5,0.314,35,1 509 | 1,130,60,23,170,28.6,0.692,21,0 510 | 2,84,50,23,76,30.4,0.968,21,0 511 | 8,120,78,0,0,25,0.409,64,0 512 | 12,84,72,31,0,29.7,0.297,46,1 513 | 0,139,62,17,210,22.1,0.207,21,0 514 | 9,91,68,0,0,24.2,0.2,58,0 515 | 2,91,62,0,0,27.3,0.525,22,0 516 | 3,99,54,19,86,25.6,0.154,24,0 517 | 3,163,70,18,105,31.6,0.268,28,1 518 | 9,145,88,34,165,30.3,0.771,53,1 519 | 7,125,86,0,0,37.6,0.304,51,0 520 | 13,76,60,0,0,32.8,0.18,41,0 521 | 6,129,90,7,326,19.6,0.582,60,0 522 | 2,68,70,32,66,25,0.187,25,0 523 | 3,124,80,33,130,33.2,0.305,26,0 524 | 6,114,0,0,0,0,0.189,26,0 525 | 9,130,70,0,0,34.2,0.652,45,1 526 | 3,125,58,0,0,31.6,0.151,24,0 527 | 3,87,60,18,0,21.8,0.444,21,0 528 | 1,97,64,19,82,18.2,0.299,21,0 529 | 3,116,74,15,105,26.3,0.107,24,0 530 | 0,117,66,31,188,30.8,0.493,22,0 531 | 0,111,65,0,0,24.6,0.66,31,0 532 | 2,122,60,18,106,29.8,0.717,22,0 533 | 0,107,76,0,0,45.3,0.686,24,0 534 | 1,86,66,52,65,41.3,0.917,29,0 535 | 6,91,0,0,0,29.8,0.501,31,0 536 | 1,77,56,30,56,33.3,1.251,24,0 537 | 4,132,0,0,0,32.9,0.302,23,1 538 | 0,105,90,0,0,29.6,0.197,46,0 539 | 0,57,60,0,0,21.7,0.735,67,0 540 | 0,127,80,37,210,36.3,0.804,23,0 541 | 3,129,92,49,155,36.4,0.968,32,1 542 | 8,100,74,40,215,39.4,0.661,43,1 543 | 3,128,72,25,190,32.4,0.549,27,1 544 | 10,90,85,32,0,34.9,0.825,56,1 545 | 4,84,90,23,56,39.5,0.159,25,0 546 | 1,88,78,29,76,32,0.365,29,0 547 | 8,186,90,35,225,34.5,0.423,37,1 548 | 5,187,76,27,207,43.6,1.034,53,1 549 | 4,131,68,21,166,33.1,0.16,28,0 550 | 1,164,82,43,67,32.8,0.341,50,0 551 | 4,189,110,31,0,28.5,0.68,37,0 552 | 1,116,70,28,0,27.4,0.204,21,0 553 | 3,84,68,30,106,31.9,0.591,25,0 554 | 6,114,88,0,0,27.8,0.247,66,0 555 | 1,88,62,24,44,29.9,0.422,23,0 556 | 1,84,64,23,115,36.9,0.471,28,0 557 | 7,124,70,33,215,25.5,0.161,37,0 558 | 1,97,70,40,0,38.1,0.218,30,0 559 | 8,110,76,0,0,27.8,0.237,58,0 560 | 11,103,68,40,0,46.2,0.126,42,0 561 | 11,85,74,0,0,30.1,0.3,35,0 562 | 6,125,76,0,0,33.8,0.121,54,1 563 | 0,198,66,32,274,41.3,0.502,28,1 564 | 1,87,68,34,77,37.6,0.401,24,0 565 | 6,99,60,19,54,26.9,0.497,32,0 566 | 0,91,80,0,0,32.4,0.601,27,0 567 | 2,95,54,14,88,26.1,0.748,22,0 568 | 1,99,72,30,18,38.6,0.412,21,0 569 | 6,92,62,32,126,32,0.085,46,0 570 | 4,154,72,29,126,31.3,0.338,37,0 571 | 0,121,66,30,165,34.3,0.203,33,1 572 | 3,78,70,0,0,32.5,0.27,39,0 573 | 2,130,96,0,0,22.6,0.268,21,0 574 | 3,111,58,31,44,29.5,0.43,22,0 575 | 2,98,60,17,120,34.7,0.198,22,0 576 | 1,143,86,30,330,30.1,0.892,23,0 577 | 1,119,44,47,63,35.5,0.28,25,0 578 | 6,108,44,20,130,24,0.813,35,0 579 | 2,118,80,0,0,42.9,0.693,21,1 580 | 10,133,68,0,0,27,0.245,36,0 581 | 2,197,70,99,0,34.7,0.575,62,1 582 | 0,151,90,46,0,42.1,0.371,21,1 583 | 6,109,60,27,0,25,0.206,27,0 584 | 12,121,78,17,0,26.5,0.259,62,0 585 | 8,100,76,0,0,38.7,0.19,42,0 586 | 8,124,76,24,600,28.7,0.687,52,1 587 | 1,93,56,11,0,22.5,0.417,22,0 588 | 8,143,66,0,0,34.9,0.129,41,1 589 | 6,103,66,0,0,24.3,0.249,29,0 590 | 3,176,86,27,156,33.3,1.154,52,1 591 | 0,73,0,0,0,21.1,0.342,25,0 592 | 11,111,84,40,0,46.8,0.925,45,1 593 | 2,112,78,50,140,39.4,0.175,24,0 594 | 3,132,80,0,0,34.4,0.402,44,1 595 | 2,82,52,22,115,28.5,1.699,25,0 596 | 6,123,72,45,230,33.6,0.733,34,0 597 | 0,188,82,14,185,32,0.682,22,1 598 | 0,67,76,0,0,45.3,0.194,46,0 599 | 1,89,24,19,25,27.8,0.559,21,0 600 | 1,173,74,0,0,36.8,0.088,38,1 601 | 1,109,38,18,120,23.1,0.407,26,0 602 | 1,108,88,19,0,27.1,0.4,24,0 603 | 6,96,0,0,0,23.7,0.19,28,0 604 | 1,124,74,36,0,27.8,0.1,30,0 605 | 7,150,78,29,126,35.2,0.692,54,1 606 | 4,183,0,0,0,28.4,0.212,36,1 607 | 1,124,60,32,0,35.8,0.514,21,0 608 | 1,181,78,42,293,40,1.258,22,1 609 | 1,92,62,25,41,19.5,0.482,25,0 610 | 0,152,82,39,272,41.5,0.27,27,0 611 | 1,111,62,13,182,24,0.138,23,0 612 | 3,106,54,21,158,30.9,0.292,24,0 613 | 3,174,58,22,194,32.9,0.593,36,1 614 | 7,168,88,42,321,38.2,0.787,40,1 615 | 6,105,80,28,0,32.5,0.878,26,0 616 | 11,138,74,26,144,36.1,0.557,50,1 617 | 3,106,72,0,0,25.8,0.207,27,0 618 | 6,117,96,0,0,28.7,0.157,30,0 619 | 2,68,62,13,15,20.1,0.257,23,0 620 | 9,112,82,24,0,28.2,1.282,50,1 621 | 0,119,0,0,0,32.4,0.141,24,1 622 | 2,112,86,42,160,38.4,0.246,28,0 623 | 2,92,76,20,0,24.2,1.698,28,0 624 | 6,183,94,0,0,40.8,1.461,45,0 625 | 0,94,70,27,115,43.5,0.347,21,0 626 | 2,108,64,0,0,30.8,0.158,21,0 627 | 4,90,88,47,54,37.7,0.362,29,0 628 | 0,125,68,0,0,24.7,0.206,21,0 629 | 0,132,78,0,0,32.4,0.393,21,0 630 | 5,128,80,0,0,34.6,0.144,45,0 631 | 4,94,65,22,0,24.7,0.148,21,0 632 | 7,114,64,0,0,27.4,0.732,34,1 633 | 0,102,78,40,90,34.5,0.238,24,0 634 | 2,111,60,0,0,26.2,0.343,23,0 635 | 1,128,82,17,183,27.5,0.115,22,0 636 | 10,92,62,0,0,25.9,0.167,31,0 637 | 13,104,72,0,0,31.2,0.465,38,1 638 | 5,104,74,0,0,28.8,0.153,48,0 639 | 2,94,76,18,66,31.6,0.649,23,0 640 | 7,97,76,32,91,40.9,0.871,32,1 641 | 1,100,74,12,46,19.5,0.149,28,0 642 | 0,102,86,17,105,29.3,0.695,27,0 643 | 4,128,70,0,0,34.3,0.303,24,0 644 | 6,147,80,0,0,29.5,0.178,50,1 645 | 4,90,0,0,0,28,0.61,31,0 646 | 3,103,72,30,152,27.6,0.73,27,0 647 | 2,157,74,35,440,39.4,0.134,30,0 648 | 1,167,74,17,144,23.4,0.447,33,1 649 | 0,179,50,36,159,37.8,0.455,22,1 650 | 11,136,84,35,130,28.3,0.26,42,1 651 | 0,107,60,25,0,26.4,0.133,23,0 652 | 1,91,54,25,100,25.2,0.234,23,0 653 | 1,117,60,23,106,33.8,0.466,27,0 654 | 5,123,74,40,77,34.1,0.269,28,0 655 | 2,120,54,0,0,26.8,0.455,27,0 656 | 1,106,70,28,135,34.2,0.142,22,0 657 | 2,155,52,27,540,38.7,0.24,25,1 658 | 2,101,58,35,90,21.8,0.155,22,0 659 | 1,120,80,48,200,38.9,1.162,41,0 660 | 11,127,106,0,0,39,0.19,51,0 661 | 3,80,82,31,70,34.2,1.292,27,1 662 | 10,162,84,0,0,27.7,0.182,54,0 663 | 1,199,76,43,0,42.9,1.394,22,1 664 | 8,167,106,46,231,37.6,0.165,43,1 665 | 9,145,80,46,130,37.9,0.637,40,1 666 | 6,115,60,39,0,33.7,0.245,40,1 667 | 1,112,80,45,132,34.8,0.217,24,0 668 | 4,145,82,18,0,32.5,0.235,70,1 669 | 10,111,70,27,0,27.5,0.141,40,1 670 | 6,98,58,33,190,34,0.43,43,0 671 | 9,154,78,30,100,30.9,0.164,45,0 672 | 6,165,68,26,168,33.6,0.631,49,0 673 | 1,99,58,10,0,25.4,0.551,21,0 674 | 10,68,106,23,49,35.5,0.285,47,0 675 | 3,123,100,35,240,57.3,0.88,22,0 676 | 8,91,82,0,0,35.6,0.587,68,0 677 | 6,195,70,0,0,30.9,0.328,31,1 678 | 9,156,86,0,0,24.8,0.23,53,1 679 | 0,93,60,0,0,35.3,0.263,25,0 680 | 3,121,52,0,0,36,0.127,25,1 681 | 2,101,58,17,265,24.2,0.614,23,0 682 | 2,56,56,28,45,24.2,0.332,22,0 683 | 0,162,76,36,0,49.6,0.364,26,1 684 | 0,95,64,39,105,44.6,0.366,22,0 685 | 4,125,80,0,0,32.3,0.536,27,1 686 | 5,136,82,0,0,0,0.64,69,0 687 | 2,129,74,26,205,33.2,0.591,25,0 688 | 3,130,64,0,0,23.1,0.314,22,0 689 | 1,107,50,19,0,28.3,0.181,29,0 690 | 1,140,74,26,180,24.1,0.828,23,0 691 | 1,144,82,46,180,46.1,0.335,46,1 692 | 8,107,80,0,0,24.6,0.856,34,0 693 | 13,158,114,0,0,42.3,0.257,44,1 694 | 2,121,70,32,95,39.1,0.886,23,0 695 | 7,129,68,49,125,38.5,0.439,43,1 696 | 2,90,60,0,0,23.5,0.191,25,0 697 | 7,142,90,24,480,30.4,0.128,43,1 698 | 3,169,74,19,125,29.9,0.268,31,1 699 | 0,99,0,0,0,25,0.253,22,0 700 | 4,127,88,11,155,34.5,0.598,28,0 701 | 4,118,70,0,0,44.5,0.904,26,0 702 | 2,122,76,27,200,35.9,0.483,26,0 703 | 6,125,78,31,0,27.6,0.565,49,1 704 | 1,168,88,29,0,35,0.905,52,1 705 | 2,129,0,0,0,38.5,0.304,41,0 706 | 4,110,76,20,100,28.4,0.118,27,0 707 | 6,80,80,36,0,39.8,0.177,28,0 708 | 10,115,0,0,0,0,0.261,30,1 709 | 2,127,46,21,335,34.4,0.176,22,0 710 | 9,164,78,0,0,32.8,0.148,45,1 711 | 2,93,64,32,160,38,0.674,23,1 712 | 3,158,64,13,387,31.2,0.295,24,0 713 | 5,126,78,27,22,29.6,0.439,40,0 714 | 10,129,62,36,0,41.2,0.441,38,1 715 | 0,134,58,20,291,26.4,0.352,21,0 716 | 3,102,74,0,0,29.5,0.121,32,0 717 | 7,187,50,33,392,33.9,0.826,34,1 718 | 3,173,78,39,185,33.8,0.97,31,1 719 | 10,94,72,18,0,23.1,0.595,56,0 720 | 1,108,60,46,178,35.5,0.415,24,0 721 | 5,97,76,27,0,35.6,0.378,52,1 722 | 4,83,86,19,0,29.3,0.317,34,0 723 | 1,114,66,36,200,38.1,0.289,21,0 724 | 1,149,68,29,127,29.3,0.349,42,1 725 | 5,117,86,30,105,39.1,0.251,42,0 726 | 1,111,94,0,0,32.8,0.265,45,0 727 | 4,112,78,40,0,39.4,0.236,38,0 728 | 1,116,78,29,180,36.1,0.496,25,0 729 | 0,141,84,26,0,32.4,0.433,22,0 730 | 2,175,88,0,0,22.9,0.326,22,0 731 | 2,92,52,0,0,30.1,0.141,22,0 732 | 3,130,78,23,79,28.4,0.323,34,1 733 | 8,120,86,0,0,28.4,0.259,22,1 734 | 2,174,88,37,120,44.5,0.646,24,1 735 | 2,106,56,27,165,29,0.426,22,0 736 | 2,105,75,0,0,23.3,0.56,53,0 737 | 4,95,60,32,0,35.4,0.284,28,0 738 | 0,126,86,27,120,27.4,0.515,21,0 739 | 8,65,72,23,0,32,0.6,42,0 740 | 2,99,60,17,160,36.6,0.453,21,0 741 | 1,102,74,0,0,39.5,0.293,42,1 742 | 11,120,80,37,150,42.3,0.785,48,1 743 | 3,102,44,20,94,30.8,0.4,26,0 744 | 1,109,58,18,116,28.5,0.219,22,0 745 | 9,140,94,0,0,32.7,0.734,45,1 746 | 13,153,88,37,140,40.6,1.174,39,0 747 | 12,100,84,33,105,30,0.488,46,0 748 | 1,147,94,41,0,49.3,0.358,27,1 749 | 1,81,74,41,57,46.3,1.096,32,0 750 | 3,187,70,22,200,36.4,0.408,36,1 751 | 6,162,62,0,0,24.3,0.178,50,1 752 | 4,136,70,0,0,31.2,1.182,22,1 753 | 1,121,78,39,74,39,0.261,28,0 754 | 3,108,62,24,0,26,0.223,25,0 755 | 0,181,88,44,510,43.3,0.222,26,1 756 | 8,154,78,32,0,32.4,0.443,45,1 757 | 1,128,88,39,110,36.5,1.057,37,1 758 | 7,137,90,41,0,32,0.391,39,0 759 | 0,123,72,0,0,36.3,0.258,52,1 760 | 1,106,76,0,0,37.5,0.197,26,0 761 | 6,190,92,0,0,35.5,0.278,66,1 762 | 2,88,58,26,16,28.4,0.766,22,0 763 | 9,170,74,31,0,44,0.403,43,1 764 | 9,89,62,0,0,22.5,0.142,33,0 765 | 10,101,76,48,180,32.9,0.171,63,0 766 | 2,122,70,27,0,36.8,0.34,27,0 767 | 5,121,72,23,112,26.2,0.245,30,0 768 | 1,126,60,0,0,30.1,0.349,47,1 769 | 1,93,70,31,0,30.4,0.315,23,0 -------------------------------------------------------------------------------- /Linear Regression/Binary.py: -------------------------------------------------------------------------------- 1 | from scipy.io import loadmat 2 | import numpy as np 3 | from sklearn.linear_model import SGDClassifier 4 | import matplotlib.pyplot as plt 5 | 6 | def displayImage(x): 7 | plt.imshow(x.reshape(28,28),cmap=plt.cm.binary,interpolation="nearest") 8 | plt.show() 9 | 10 | def displayPredict(clf,actually_y,x): 11 | print("Actual = " ,actually_y) 12 | print("Predict = " , clf.predict([x])[0]) 13 | 14 | 15 | mnist_raw=loadmat("mnist-original.mat") 16 | mnist={ 17 | "data":mnist_raw["data"].T, 18 | "target":mnist_raw["label"][0] 19 | } 20 | 21 | x,y=mnist['data'],mnist['target'] 22 | x_train,x_test,y_train,y_test=x[:60000],x[60000:],y[:60000],y[60000:] 23 | 24 | 25 | y_train_0=(y_train==0) 26 | 27 | sgd=SGDClassifier() 28 | sgd.fit(x_train,y_train_0) 29 | 30 | predict_data = 5500 31 | 32 | displayImage(x_test[5500]) 33 | displayPredict(sgd,y_train_0[predict_data],x_test[predict_data]) 34 | 35 | 36 | 37 | 38 | 39 | 40 | -------------------------------------------------------------------------------- /Linear Regression/BinarySGD.py: -------------------------------------------------------------------------------- 1 | from scipy.io import loadmat 2 | import numpy as np 3 | import matplotlib.pyplot as plt 4 | from sklearn.linear_model import SGDClassifier 5 | from sklearn.model_selection import cross_val_score 6 | from sklearn.metrics import confusion_matrix 7 | from sklearn.model_selection import cross_val_predict 8 | import itertools 9 | from sklearn.metrics import classification_report 10 | from sklearn.metrics import accuracy_score 11 | 12 | def displayConfusionMatrix(cm,cmap=plt.cm.GnBu): 13 | classes=["Other Number","Number 5"] 14 | plt.imshow(cm,interpolation='nearest',cmap=cmap) 15 | plt.title("Confusion Matrix") 16 | plt.colorbar() 17 | trick_marks=np.arange(len(classes)) 18 | plt.xticks(trick_marks,classes) 19 | plt.yticks(trick_marks,classes) 20 | thresh=cm.max()/2 21 | for i , j in itertools.product(range(cm.shape[0]),range(cm.shape[1])): 22 | plt.text(j,i,format(cm[i,j],'d'), 23 | horizontalalignment='center', 24 | color='white' if cm[i,j]>thresh else 'black') 25 | 26 | plt.tight_layout() 27 | plt.ylabel('Actually') 28 | plt.xlabel('Prediction') 29 | plt.show() 30 | 31 | def displayImage(x): 32 | plt.imshow( 33 | x.reshape(28,28), 34 | cmap=plt.cm.binary, 35 | interpolation="nearest") 36 | plt.show() 37 | 38 | def displayPredict(clf,actually_y,x): 39 | print("Actually = ",actually_y) 40 | print("Prediction = ",clf.predict([x])[0]) 41 | 42 | mnist_raw=loadmat("mnist-original.mat") 43 | mnist={ 44 | "data":mnist_raw["data"].T, 45 | "target":mnist_raw["label"][0] 46 | } 47 | 48 | x,y=mnist["data"],mnist["target"] 49 | # Training & Test Set 50 | # class 0 - 9 51 | x_train , x_test,y_train,y_test= x[:60000],x[60000:],y[:60000],y[60000:] 52 | 53 | # class 5 , ไม่ใช่ class 5 54 | # ข้อมูลค่า 5000 -> model -> class 0 หรือไม่ ? true : false 55 | 56 | # y_train =[0,0,.......,9...,9] 57 | predict_number = 5500 58 | y_train_5 = (y_train==5) 59 | y_test_5 = (y_test==5) 60 | 61 | # y_train_0 =[true,true,.......,false...,false] 62 | 63 | sgd_clf = SGDClassifier() 64 | sgd_clf.fit(x_train,y_train_5) 65 | 66 | y_train_pred = cross_val_predict(sgd_clf,x_train,y_train_5,cv=3) 67 | cm=confusion_matrix(y_train_5,y_train_pred) 68 | 69 | y_test_pred=sgd_clf.predict(x_test) 70 | 71 | # classes=['Other Number','Number 5'] 72 | # print(classification_report(y_test_5,y_test_pred,target_names=classes)) 73 | print("Accuracy Score = ",accuracy_score(y_test_5,y_test_pred)*100) 74 | 75 | 76 | 77 | -------------------------------------------------------------------------------- /Linear Regression/MLPredictWeather.py: -------------------------------------------------------------------------------- 1 | import pandas as pd 2 | import numpy as np 3 | import matplotlib.pyplot as plt 4 | from sklearn.model_selection import train_test_split 5 | from sklearn.linear_model import LinearRegression 6 | from sklearn import metrics 7 | 8 | dataset=pd.read_csv("https://raw.githubusercontent.com/kongruksiamza/MachineLearning/master/Weather.csv") 9 | 10 | # train & test set 11 | x = dataset["MinTemp"].values.reshape(-1,1) 12 | y = dataset["MaxTemp"].values.reshape(-1,1) 13 | 14 | # 80% - 20% 15 | x_train,x_test,y_train,y_test =train_test_split(x,y,test_size=0.2,random_state=0) 16 | 17 | #training 18 | model=LinearRegression() 19 | model.fit(x_train,y_train) 20 | 21 | #test 22 | y_pred=model.predict(x_test) 23 | 24 | # compare true data & predict data 25 | df=pd.DataFrame({'Actually':y_test.flatten(),'Predicted':y_pred.flatten()}) 26 | 27 | print("MAE = ",metrics.mean_absolute_error(y_test,y_pred)) 28 | print("MSE = ",metrics.mean_squared_error(y_test,y_pred)) 29 | print("RMSE = ",np.sqrt(metrics.mean_squared_error(y_test,y_pred))) 30 | print("Score = ",metrics.r2_score(y_test,y_pred)) 31 | -------------------------------------------------------------------------------- /Naive Bay Classification/NaiveBay.py: -------------------------------------------------------------------------------- 1 | from sklearn.datasets import load_iris 2 | from sklearn.model_selection import train_test_split 3 | from sklearn.naive_bayes import GaussianNB 4 | from sklearn.metrics import accuracy_score 5 | #load dataset 6 | iris=load_iris() 7 | #assign attribute , target 8 | x=iris['data'] 9 | y=iris['target'] 10 | 11 | # train , test 12 | x_train,x_test,y_train,y_test=train_test_split(x,y) 13 | 14 | #model 15 | model=GaussianNB() 16 | #train 17 | model.fit(x_train,y_train) 18 | 19 | #prediction 20 | y_pred=model.predict(x_test) 21 | 22 | #Accuracy Score 23 | print("Accuracy = ",accuracy_score(y_test,y_pred)) 24 | -------------------------------------------------------------------------------- /Naive Bay Classification/NaiveBayAdult.py: -------------------------------------------------------------------------------- 1 | #Dataset : https://www.kaggle.com/uciml/adult-census-income 2 | import pandas as pd 3 | from sklearn.preprocessing import LabelEncoder 4 | from sklearn.model_selection import train_test_split 5 | from sklearn.naive_bayes import GaussianNB 6 | from sklearn.metrics import accuracy_score 7 | 8 | def cleandata(dataset): 9 | for column in dataset.columns: 10 | if dataset[column].dtype == type(object): 11 | le = LabelEncoder() 12 | dataset[column]=le.fit_transform(dataset[column]) 13 | return dataset 14 | 15 | def split_feature_class(dataset,feature): 16 | features=dataset.drop(feature,axis=1) # เอาข้อมูลทั้งหมดยกเว้น income 17 | labels=dataset[feature].copy() #เอาเฉพาะข้อมูล income 18 | return features,labels 19 | 20 | dataset=pd.read_csv("adult.csv") 21 | dataset=cleandata(dataset) 22 | 23 | #split train ,test 24 | training_set,test_set=train_test_split(dataset,test_size=0.2) 25 | 26 | #train 27 | train_features,train_labels=split_feature_class(training_set,"income") 28 | 29 | #test 30 | test_features,test_labels=split_feature_class(test_set,"income") 31 | 32 | #model 33 | model=GaussianNB() 34 | model.fit(train_features,train_labels) 35 | 36 | #predict 37 | clf_pred=model.predict(test_features) 38 | 39 | print("Accuracy = ",accuracy_score(test_labels,clf_pred)) -------------------------------------------------------------------------------- /Neural Network/Characters.py: -------------------------------------------------------------------------------- 1 | from scipy.io import loadmat 2 | import matplotlib.pyplot as plt 3 | import numpy as np 4 | from sklearn.neural_network import MLPClassifier 5 | mnist_raw=loadmat("mnist-original.mat") 6 | mnist={ 7 | "data":mnist_raw["data"].T, 8 | "target":mnist_raw["label"][0] 9 | } 10 | shuffle=np.random.permutation(70000) 11 | 12 | x,y=mnist["data"],mnist["target"] 13 | # Training & Test Set 14 | # class 0 - 9 15 | x,y=x[shuffle],y[shuffle] 16 | x_train , x_test,y_train,y_test= x[:60000],x[60000:],y[:60000],y[60000:] 17 | 18 | mlp=MLPClassifier() 19 | mlp.fit(x_train,y_train) 20 | 21 | # print(x_train.shape,x_test.shape,y_train.shape,y_test.shape) 22 | # fig,ax=plt.subplots(10,10, 23 | # figsize=(8,8), 24 | # subplot_kw={'xticks':[],'yticks':[]}, 25 | # gridspec_kw=dict(hspace=0.1,wspace=0.1) 26 | # ) 27 | # for i, axi in enumerate(ax.flat): 28 | # axi.imshow(x_train[i].reshape(28,28),cmap='binary',interpolation='nearest') 29 | # axi.text(0.05,0.05,str(int(y_train[i])),transform=axi.transAxes,color='black') 30 | # plt.show() 31 | 32 | # print(mlp.score(x_train,y_train)) 33 | # print(mlp.score(x_test,y_test)) 34 | 35 | y_pred=mlp.predict(x_test) 36 | 37 | fig,ax=plt.subplots(10,10, 38 | figsize=(8,8), 39 | subplot_kw={'xticks':[],'yticks':[]}, 40 | gridspec_kw=dict(hspace=0.1,wspace=0.1) 41 | ) 42 | for i, axi in enumerate(ax.flat): 43 | axi.imshow(x_test[i].reshape(28,28),cmap='binary',interpolation='nearest') 44 | axi.text(0.05,0.05,str(int(y_test[i])),transform=axi.transAxes,color='black') 45 | axi.text(0.75,0.75,str(int(y_pred[i])),transform=axi.transAxes,color='green' 46 | if y_pred[i]==y_test[i] else 'red') 47 | plt.show() -------------------------------------------------------------------------------- /Neural Network/MLP.py: -------------------------------------------------------------------------------- 1 | from scipy.io import loadmat 2 | import matplotlib.pyplot as plt 3 | from sklearn.neural_network import MLPClassifier 4 | from sklearn.metrics import accuracy_score 5 | import numpy as np 6 | mnist_raw=loadmat("mnist-original.mat") 7 | mnist={ 8 | "data":mnist_raw["data"].T, 9 | "target":mnist_raw["label"][0] 10 | } 11 | 12 | x,y=mnist["data"],mnist["target"] 13 | #shuffle data 14 | shuffle=np.random.permutation(70000) 15 | x,y=x[shuffle],y[shuffle] 16 | x_train , x_test,y_train,y_test= x[:60000],x[60000:],y[:60000],y[60000:] 17 | 18 | 19 | #create model 20 | model=MLPClassifier() 21 | model.fit(x_train,y_train) 22 | 23 | y_pred=model.predict(x_test) 24 | 25 | fig,ax=plt.subplots(10,10, 26 | figsize=(8,8), 27 | subplot_kw={'xticks':[],'yticks':[]}, 28 | gridspec_kw=dict(hspace=0.1,wspace=0.1)) 29 | 30 | #display image data after training & prediction 31 | for i , axi in enumerate(ax.flat): 32 | #display test image data 33 | axi.imshow(x_test[i].reshape(28,28),cmap='binary',interpolation='nearest') 34 | #display text true number image data 35 | axi.text(0.05,0.05,str(int(y_test[i])),transform=axi.transAxes,color="black") 36 | ##display text predict number image data 37 | axi.text(0.75,0.05,str(int(y_pred[i])),transform=axi.transAxes, 38 | color="green" if y_pred[i] == y_test[i] else "red") 39 | plt.show() 40 | 41 | 42 | -------------------------------------------------------------------------------- /PCA/PCABasic.py: -------------------------------------------------------------------------------- 1 | from sklearn.datasets import make_blobs 2 | from sklearn.decomposition import PCA 3 | import pandas as pd 4 | import matplotlib.pyplot as plt 5 | import seaborn as sb 6 | x,y=make_blobs(n_samples=100,n_features=10) 7 | 8 | pca=PCA(n_components=4) 9 | pca.fit_transform(x) 10 | 11 | df=pd.DataFrame({'var':pca.explained_variance_ratio_,'pc':['PC1','PC2','PC3','PC4']}) 12 | sb.barplot(x='pc',y='var',data=df,color='c') 13 | plt.show() 14 | 15 | -------------------------------------------------------------------------------- /PCA/PCAIris.py: -------------------------------------------------------------------------------- 1 | from sklearn.model_selection import train_test_split 2 | from sklearn.naive_bayes import GaussianNB 3 | from sklearn.metrics import accuracy_score 4 | import seaborn as sb 5 | from sklearn.decomposition import PCA 6 | 7 | #load data 8 | iris=sb.load_dataset('iris') 9 | x=iris.drop('species',axis=1) # 4 10 | y=iris['species'] 11 | 12 | #pca 13 | pca=PCA(n_components=3) 14 | x_pca=pca.fit_transform(x) 15 | 16 | # add before , after 17 | x['PCA1']=x_pca[:,0] 18 | x['PCA2']=x_pca[:,1] 19 | x['PCA3']=x_pca[:,2] 20 | 21 | x_train,x_test,y_train,y_test=train_test_split(x,y) 22 | 23 | #Complete Data 24 | x_train=x_train.loc[:,['PCA1','PCA2','PCA3']] 25 | x_test=x_test.loc[:,['PCA1','PCA2','PCA3']] 26 | 27 | model=GaussianNB() 28 | model.fit(x_train,y_train) 29 | y_pred=model.predict(x_test) 30 | 31 | #Accuracy Score 94% 32 | print("Accuracy = ",accuracy_score(y_test,y_pred)) -------------------------------------------------------------------------------- /PCA/PCAMnist.py: -------------------------------------------------------------------------------- 1 | from sklearn.model_selection import train_test_split 2 | from sklearn.decomposition import PCA 3 | from scipy.io import loadmat 4 | import matplotlib.pyplot as plt 5 | 6 | mnist_raw=loadmat("mnist-original.mat") 7 | mnist={ 8 | "data":mnist_raw["data"].T, 9 | "target":mnist_raw["label"][0] 10 | } 11 | x_train, x_test, y_train,y_test = train_test_split(mnist["data"], mnist["target"], random_state=0) 12 | 13 | 14 | pca=PCA(.80) 15 | data=pca.fit_transform(x_train) 16 | result=pca.inverse_transform(data) 17 | print(pca.n_components_) 18 | #show image 19 | plt.figure(figsize=(8,4)) 20 | #image feature 784 21 | plt.subplot(1,2,1) 22 | plt.imshow(mnist["data"][0].reshape(28,28),cmap=plt.cm.gray,interpolation="nearest") 23 | plt.xlabel("784 Components") 24 | plt.title("Original") 25 | #image feature 95% -> 154 26 | plt.subplot(1,2,2) 27 | plt.imshow(result[0].reshape(28,28),cmap=plt.cm.gray,interpolation="nearest") 28 | plt.xlabel("43 Components") 29 | plt.title("PCA Image") 30 | plt.show() -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |