۲ مطلب در شهریور ۱۴۰۲ ثبت شده است

نزدیک ترین همسایه در پایتون

#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 

۰ نظر موافقین ۰ مخالفین ۰
Dr. JAN

رگرسیون خطی در پایتون

#Importing Needed packages

import matplotlib.pyplot as plt
import pandas as pd
import pylab as pl
import numpy as np

قبل از فراخوانی بسته ها باید آنها را نصب داشته باشیم. برای نصب بسته ها، قبل از ورود به پایتون و در ترمینال از دستور 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%202/data/FuelConsumptionCo2.csv")
print (df)
# take a look at the dataset
df.head()
# summarize the data
df.describe()

 

آدرس فوق یک مثال برای انجام کد است و می تواند داده دیگری جایگزین آن گردد.

#Select some features

cdf = df[['ENGINESIZE','CYLINDERS', 'FUELCONSUMPTION_CITY','FUELCONSUMPTION_HWY','FUELCONSUMPTION_COMB','CO2EMISSIONS']]
cdf.head(9)

#Histogram Plot

viz = cdf[['CYLINDERS','ENGINESIZE','CO2EMISSIONS','FUELCONSUMPTION_COMB']]
viz.hist()
plt.show()

#Scatter Plot

plt.scatter(cdf.FUELCONSUMPTION_COMB, cdf.CO2EMISSIONS,  color='blue')
plt.xlabel("FUELCONSUMPTION_COMB")
plt.ylabel("Emission")
plt.show()

وجود رابطه خطی بین متغیر مستقل و وابسته برای انجام رگرسیون خطی ضروری است. برای بررسی این رابطه از نمودار پراکنش استفاده می شود.

#Creating train and test dataset

msk = np.random.rand(len(df)) < 0.8
train = cdf[msk]
test = cdf[~msk

#Train data distribution

plt.scatter(train.ENGINESIZE, train.CO2EMISSIONS,  color='blue')
plt.xlabel("Engine size")
plt.ylabel("Emission")
plt.show()

#Modeling

from sklearn import linear_model
regr = linear_model.LinearRegression()
train_x = np.asanyarray(train[['ENGINESIZE','CYLINDERS','FUELCONSUMPTION_COMB']])
train_y = np.asanyarray(train[['CO2EMISSIONS']])
regr.fit(train_x, train_y)
# The coefficients
print ('Coefficients: ', regr.coef_)
print ('Intercept: ',regr.intercept_)

نوع رگرسیون خطی بسته به تعداد متغیر مستقل (x) دارد. در رگرسیون ساده (simple) تنها از یک متغیر مستقل و در رگرسیون چندگانه (multiple) از بیش از یک متغیر مستقل استفاده می شود.

#Plot outputs

plt.scatter(train.ENGINESIZE, train.CO2EMISSIONS,  color='blue')
plt.plot(train_x, regr.coef_[0][0]*train_x + regr.intercept_[0], '-r')
plt.xlabel("Engine size")
plt.ylabel("Emission")

#Evaluation

from sklearn.metrics import r2_score

test_x = np.asanyarray(test[['ENGINESIZE','CYLINDERS','FUELCONSUMPTION_COMB']])
test_y = np.asanyarray(test[['CO2EMISSIONS']])
test_y_ = regr.predict(test_x)

print("Mean absolute error: %.2f" % np.mean(np.absolute(test_y_ - test_y)))
print("Residual sum of squares (MSE): %.2f" % np.mean((test_y_ - test_y) ** 2))
print("R2-score: %.2f" % r2_score(test_y , test_y_) )
print('Variance score: %.2f' % regr.score(test_x, test_y))

مدل بهینه مدلی است که کمترین خطا را داشته باشد، یعنی کمترین MSE.

برگرفته از Machine learning with Python, IBM Developer 

۰ نظر موافقین ۰ مخالفین ۰
Dr. JAN