#Importing needed packages
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
from sklearn import preprocessing
برای نصب بستهها، قبل از ورود به پایتون و در ترمینال از دستور pip3 install PACKAGE(s) NAME استفاده میکنیم.
#Downloading and reading data
df= pd.read_csv("https://cf-courses-data.s3.us.cloud-object-storage.appdomain.cloud/IBMDeveloperSkillsNetwork-ML0101EN-SkillsNetwork/labs/Module%203/data/teleCust1000t.csv")
# take a look at the dataset
print(df.head())
# summarize the data
print(df.describe())
#how many of each class is in our data set
df['custcat'].value_counts()
آدرس فوق یک مثال برای انجام کد است و میتواند داده دیگری جایگزین آن گردد.
اگر دستور head و امثال آن در ترمینال نوشته شود نیازی به print() نیست. اما اگر در IDE نوشته شود بدون print() چیزی نمایش داده نمیشود.
#Feature set
df.columns
X = df[['region', 'tenure','age', 'marital', 'address', 'income', 'ed', 'employ','retire', 'gender', 'reside']] .values
y = df['custcat'].values
برای استفاده از کتابخانه
scikit-learn
لازم است از طریق کد بالا قالب داده pandas به آرایه Numphy تبدیل شود.
#Histogram plot
df.hist(column='income', bins=50)
plt.show()
#Creating train and test dataset
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split( X, y, test_size=0.2, random_state=4)
print ('Train set:', X_train.shape, y_train.shape)
print ('Test set:', X_test.shape, y_test.shape)
#Normalize data
X_train_norm = preprocessing.StandardScaler().fit(X_train).transform(X_train.astype(float))
استاندارد کردن دادهها سبب ایجاد میانگین صفر و واریانس یک میشود. این کار برای الگوریتمهای مبتنی بر فاصله مانند KNN ضروری است.
#Classifiaction
from sklearn.neighbors import KNeighborsClassifier
k = 4
#Train Model and Predict
neigh = KNeighborsClassifier(n_neighbors = k).fit(X_train_norm,y_train)
print(neigh)
X_test_norm = preprocessing.StandardScaler().fit(X_test).transform(X_test.astype(float))
yhat = neigh.predict(X_test_norm)
#Evaluation
from sklearn import metrics
print("Train set Accuracy: ", metrics.accuracy_score(y_train, neigh.predict(X_train_norm)))
print("Test set Accuracy: ", metrics.accuracy_score(y_test, yhat))
ارزیابی براساس روش جاکارد (
jaccard_score
) انجام گرفت.
#The best K
Ks = 10
mean_acc = np.zeros((Ks-1))
std_acc = np.zeros((Ks-1))
for n in range(1,Ks):
#Train Model and Predict
neigh = KNeighborsClassifier(n_neighbors = n).fit(X_train_norm,y_train)
yhat=neigh.predict(X_test_norm)
mean_acc[n-1] = metrics.accuracy_score(y_test, yhat)
std_acc[n-1]=np.std(yhat==y_test)/np.sqrt(yhat.shape[0])
print(mean_acc)
#Plot the accuracy vs K
plt.plot(range(1,Ks),mean_acc,'g')
plt.fill_between(range(1,Ks),mean_acc - 1 * std_acc,mean_acc + 1 * std_acc, alpha=0.10)
plt.fill_between(range(1,Ks),mean_acc - 3 * std_acc,mean_acc + 3 * std_acc, alpha=0.10,color="green")
plt.legend(('Accuracy ', '+/- 1xstd','+/- 3xstd'))
plt.ylabel('Accuracy ')
plt.xlabel('Number of Neighbors (K)')
plt.tight_layout()
plt.show()
print( "The best accuracy was with", mean_acc.max(), "with k=", mean_acc.argmax()+1)
برگرفته از Machine learning with Python, IBM Developer
هکرها از XWorm RAT برای بهره برداری از اسکریپت Kiddies، Pwning 18000 دستگاه استفاده می کنند.