-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathSVR
More file actions
50 lines (47 loc) · 1.83 KB
/
Copy pathSVR
File metadata and controls
50 lines (47 loc) · 1.83 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
from sklearn.svm import SVR
from sklearn.preprocessing import MinMaxScaler
import pandas as pd
from sklearn.metrics import mean_absolute_error, mean_squared_error, r2_score
import math
import model_evaluation
import time
"""
Parameters:
- kernel: Specifies the kernel type to be used in the algorithm.
kernel = {‘linear’, ‘poly’, ‘rbf’, ‘sigmoid’, ‘precomputed’}
- X_train: Training feature data.
- y_train: Training target data.
- X_test: Test feature data.
"""
def support_vector_regression(kernel, X_train, y_train, X_test):
# Initialise an SVR model with given kernel
svr_model = SVR(kernel=kernel)
# train and predict model
svr_model.fit(X_train, y_train)
svr_predictions = svr_model.predict(X_test)
# Return predictions
return svr_predictions
def main():
train_set = pd.read_csv("train.csv")
test_set = pd.read_csv("test.csv")
features = ['OCC_YEAR','OCC_MONTH','PREMISES','HOOD','LONG','LAT','WEIGHT','NSI']
target = 'TARGET'
X_train = train_set[features].values
y_train = train_set[target].values
X_test = test_set[features].values
y_test = test_set[target].values
scaler = MinMaxScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)
kernel = 'linear' #Linear kernel is chosen due to its lowest computation time among all kernels
print("Training SVR")
start=time.time()
y_pred = support_vector_regression(kernel, X_train_scaled, y_train, X_test_scaled)
end=time.time()
print("Training Completed")
# print the evaluation metrics using the print_evaluation in model_evaluation
print("Training Time",end-start,"seconds")
model_evaluation.print_evaluation(y_test, y_pred)
print("END")
if __name__ == "__main__":
main()