#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