sklearn (sk for scikit) என்பது python-ல் உள்ள இயந்திரவழிக் கற்றலுக்கான ஒரு library ஆகும். இதில் classification, regression ஆகிய வகைகளின் கீழ் அமையும் linear, ensemble, neural networks போன்ற அனைத்து விதமான model-க்கும் algorithms காணப்படும். இதிலிருந்து LinearRegression எனும் algorithm-ஐ எடுத்து அதற்கு நம்முடைய data-வைப் பற்றி நாம் கற்றுத் தருகிறோம். இதற்கான நிரல் பின்வருமாறு.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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') |
நிரலுக்கான வெளியீடு:
[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]
நிரலுக்கான விளக்கம்:
- training_data எனும் கோப்பிற்குள் உள்ள அனைத்துத் தரவுகளும் df-க்குள் செலுத்தப்பட்டுவிட்டன.
- கணிப்பதற்கு உதவும் அனைத்தும் X-லும், கணிக்கப்பட வேண்டிய ‘SalePrice’ என்பது y-லும் சேமிக்கப்பட்டுள்ளது. இதற்கு முன்னர் pop() என்பது கணிக்கப்பட வேண்டிய column-ஐ df-லிருந்து நீக்கி பின்னர் மீண்டும் கடைசி column-ஆக இணைக்கிறது. இதன் மூலம் [ :-1] எனக் கொடுத்து கடைசிக்கு முன்னால் உள்ள அனைத்தும் X-லும் கடைசி column-ஆன ‘SalePrice’-ஐ y-லும் சேமித்துக் கொள்ளலாம்.
- fit() என்பது கற்றுக் கொடுப்பதற்கும், predict() என்பது கணிப்பதற்கும் பயன்படுகிறது.
- score() என்பது நமது algorithm எவ்வளவு தூரம் சரியாகக் கற்றுக்கொண்டுள்ளது என்பதை மதிப்பிடப் பயன்படுகிறது.
- train_test_split() என்பது நம்முடைய மொத்தத் தரவுகளை 75% – 25% எனும் விகிதத்தில் பிரிக்கிறது. அதாவது 75% தரவுகள் கற்றுக் கொடுப்பதற்கும், 25% தரவுகள் சோதனை செய்து மதிப்பிடுவதற்கும் பயன்படும்.
- mean_squared_error, sqrt ஆகிய functions, நமது algorithm-ஆல் கணிக்கப்படும் மதிப்புகளுக்கும் உண்மையான மதிப்புகளுக்கும் உள்ள இழப்பின் சராசரியைக் கண்டறிந்து கூறும். இந்த இழப்பு தான் ‘Residual Error’ ஆகும். இது ஒரு வரைபடமாக வரைந்து காட்டப்பட்டுள்ளது.
- joblib என்பது நமது model-ஐ .pkl கோப்பாக சேமிக்கும். இதுவே pickle file ஆகும். இது serialization மற்றும் de-serialization-க்கு உதவுகின்ற ஒரு binary கோப்பு வகை ஆகும். இதை வைத்து எவ்வாறு புதிய தரவுகளை கணிப்பது என அடுத்த பகுதியில் காணலாம்.