Machine Learning – 6 – Model Creation

sklearn (sk for scikit) என்பது python-ல் உள்ள இயந்திரவழிக் கற்றலுக்கான ஒரு library ஆகும். இதில் classification, regression ஆகிய வகைகளின் கீழ் அமையும் linear, ensemble, neural networks போன்ற அனைத்து விதமான model-க்கும் algorithms காணப்படும். இதிலிருந்து LinearRegression எனும் algorithm-ஐ எடுத்து அதற்கு நம்முடைய data-வைப் பற்றி நாம் கற்றுத் தருகிறோம். இதற்கான நிரல் பின்வருமாறு.


import pandas as pd
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split,cross_val_score
from sklearn.externals import joblib
from sklearn.metrics import mean_squared_error
import matplotlib.pyplot as plt
from math import sqrt
import os
df = pd.read_csv('./training_data.csv')
i = list(df.columns.values)
i.pop(i.index('SalePrice'))
df0 = df[i+['SalePrice']]
df = df0.select_dtypes(include=['integer','float'])
print (df.columns)
X = df[list(df.columns)[:-1]]
y = df['SalePrice']
X_train, X_test, y_train, y_test = train_test_split(X, y)
regressor = LinearRegression()
regressor.fit(X_train, y_train)
y_predictions = regressor.predict(X_test)
meanSquaredError=mean_squared_error(y_test, y_predictions)
rootMeanSquaredError = sqrt(meanSquaredError)
print("Number of predictions:",len(y_predictions))
print("Mean Squared Error:", meanSquaredError)
print("Root Mean Squared Error:", rootMeanSquaredError)
print ("Scoring:",regressor.score(X_test, y_test))
plt.plot(y_predictions,y_test,'r.')
plt.plot(y_predictions,y_predictions,'k-')
plt.title('Parity Plot – Linear Regression')
plt.show()
plot = plt.scatter(y_predictions, (y_predictions – y_test), c='b')
plt.hlines(y=0, xmin= 100000, xmax=400000)
plt.title('Residual Plot – Linear Regression')
plt.show()
joblib.dump(regressor, './salepricemodel.pkl')

view raw

model.py

hosted with ❤ by GitHub

நிரலுக்கான வெளியீடு:

[code language=”bash”]
Index([‘OverallQual’, ‘TotalBsmtSF’, ‘1stFlrSF’, ‘GrLivArea’, ‘FullBath’,
‘TotRmsAbvGrd’, ‘Fireplaces’, ‘GarageCars’, ‘GarageArea’,
‘Years Before Sale’, ‘Years Since Remod’, ‘SalePrice’],
dtype=’object’)
Number of predictions: 365
Mean Squared Error: 981297922.7884247
Root Mean Squared Error: 31325.675136993053
Scoring: 0.818899237738355
[/code]

நிரலுக்கான விளக்கம்:

  1. training_data எனும் கோப்பிற்குள் உள்ள அனைத்துத் தரவுகளும் df-க்குள் செலுத்தப்பட்டுவிட்டன.
  2. கணிப்பதற்கு உதவும் அனைத்தும் X-லும், கணிக்கப்பட வேண்டிய ‘SalePrice’ என்பது y-லும் சேமிக்கப்பட்டுள்ளது. இதற்கு முன்னர் pop() என்பது கணிக்கப்பட வேண்டிய column-ஐ df-லிருந்து நீக்கி பின்னர் மீண்டும் கடைசி column-ஆக இணைக்கிறது. இதன் மூலம் [ :-1] எனக் கொடுத்து கடைசிக்கு முன்னால் உள்ள அனைத்தும் X-லும் கடைசி column-ஆன  ‘SalePrice’-ஐ y-லும் சேமித்துக் கொள்ளலாம்.
  3. fit() என்பது கற்றுக் கொடுப்பதற்கும், predict() என்பது கணிப்பதற்கும் பயன்படுகிறது.
  4. score() என்பது நமது algorithm எவ்வளவு தூரம் சரியாகக் கற்றுக்கொண்டுள்ளது என்பதை மதிப்பிடப் பயன்படுகிறது.
  5. train_test_split() என்பது நம்முடைய மொத்தத் தரவுகளை 75% – 25% எனும் விகிதத்தில் பிரிக்கிறது. அதாவது 75% தரவுகள் கற்றுக் கொடுப்பதற்கும், 25% தரவுகள் சோதனை செய்து மதிப்பிடுவதற்கும் பயன்படும்.
  6. mean_squared_error, sqrt ஆகிய functions, நமது algorithm-ஆல் கணிக்கப்படும் மதிப்புகளுக்கும் உண்மையான மதிப்புகளுக்கும் உள்ள இழப்பின் சராசரியைக் கண்டறிந்து கூறும். இந்த இழப்பு தான் ‘Residual Error’ ஆகும். இது ஒரு வரைபடமாக வரைந்து காட்டப்பட்டுள்ளது.
  7. joblib என்பது நமது model-ஐ .pkl கோப்பாக சேமிக்கும். இதுவே pickle file ஆகும். இது serialization மற்றும் de-serialization-க்கு உதவுகின்ற ஒரு binary கோப்பு வகை ஆகும். இதை வைத்து எவ்வாறு புதிய தரவுகளை கணிப்பது என அடுத்த பகுதியில் காணலாம்.
%d bloggers like this: