2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
समर्थनसदिशयन्त्रम् (SVM) रेखीय-अरेखीयवर्गीकरणाय, प्रतिगमनाय, बहिर्मुखीयपरिचयाय च उपयुक्तं शक्तिशाली बहुमुखी च यन्त्रशिक्षणप्रतिरूपम् अस्ति । अयं लेखः समर्थनसदिशयन्त्रस्य एल्गोरिदमस्य परिचयं करिष्यति तथा च scikit-learn इत्यस्मिन् तस्य कार्यान्वयनम्, तथा च संक्षेपेण मुख्यघटकविश्लेषणस्य अन्वेषणं करिष्यति तथा च scikit-learn इत्यस्मिन् तस्य अनुप्रयोगस्य अन्वेषणं करिष्यति
समर्थनसदिशयन्त्रं (SVM) यन्त्रशिक्षणक्षेत्रे व्यापकरूपेण प्रयुक्तः एल्गोरिदम् अस्ति, यः न्यूनगणनासंसाधनैः सह महत्त्वपूर्णसटीकतां प्रदातुं तस्य विशेषतायाः अनुकूलः अस्ति SVM इत्यस्य उपयोगः वर्गीकरणस्य प्रतिगमनकार्यस्य च कृते कर्तुं शक्यते, परन्तु वर्गीकरणसमस्यासु अधिकतया उपयुज्यते ।
समर्थनसदिशयन्त्राणां लक्ष्यं भवति यत्... एन.एनन॰ आयामी अन्तरिक्ष ( . एन.एनन॰ विशेषतानां संख्या अस्ति) इति अतिविमानं अन्वेष्टुं यत् दत्तांशबिन्दून् स्पष्टतया भेदं कर्तुं शक्नोति । एतत् अतिविमानं वर्गीकरणस्य दृढतां सुनिश्चित्य भिन्नवर्गस्य दत्तांशबिन्दून् पृथक् कर्तुं अतिविमानात् यथासम्भवं दूरं च कर्तुं शक्नोति
दत्तांशबिन्दून् प्रभावी पृथक्करणं प्राप्तुं बहुविधाः अतिविमानाः विद्यन्ते । अस्माकं लक्ष्यं अधिकतममार्जिनयुक्तं अतिविमानं चिन्वन्तु, अर्थात् द्वयोः वर्गयोः अधिकतमं दूरं भवति । मार्जिनस्य अधिकतमीकरणेन वर्गीकरणस्य सटीकतायां सुधारः भवति ।
अतिविमानः एकः निर्णयसीमा अस्ति यः दत्तांशबिन्दून् विभजति । अतिविमानस्य उभयतः स्थिताः दत्तांशबिन्दवः भिन्न-भिन्न-वर्गेषु वर्गीकृताः भवितुम् अर्हन्ति । अतिविमानस्य आयामाः विशेषतानां संख्यायाः उपरि निर्भरं कुर्वन्ति : यदि निवेशविशेषताः २ सन्ति तर्हि अतिविमानं ऋजुरेखा भवति यदि अतिविमानं द्विमात्रिकं विमानं भवति यदा विशेषतानां संख्या ३ अधिका भवति तदा अतिविमानं सहजतया अवगन्तुं कठिनं भवति ।
समर्थनसदिशः अतिविमानस्य समीपस्थं तान् बिन्दून् निर्दिशन्ति, ये अतिविमानस्य स्थितिं दिशां च प्रभावितयन्ति । एतैः समर्थनसदिशैः वयं वर्गीकरणस्य मार्जिनं अधिकतमं कर्तुं शक्नुमः । समर्थनसदिशं हृत्वा अतिविमानस्य स्थितिः परिवर्तते, अतः ते SVM निर्मातुं महत्त्वपूर्णाः सन्ति ।
लॉजिस्टिक रिग्रेशन इत्यस्मिन् वयं रेखीय फंक्शन् इत्यस्य आउटपुट् मूल्यं [0,1] इति परिधिमध्ये संपीडयितुं तथा च थ्रेशोल्ड् (0.5) इत्यस्य आधारेण लेबल् असाइन कर्तुं सिग्मोइड् फंक्शन् इत्यस्य उपयोगं कुर्मः SVM मध्ये वयं वर्गीकरणस्य निर्णयार्थं रेखीयफलनस्य आउटपुट् मूल्यस्य उपयोगं कुर्मः: यदि आउटपुट् 1 इत्यस्मात् अधिकं भवति तर्हि यदि आउटपुट् -1 अस्ति तर्हि अन्यस्य क्लास् इत्यस्य भवति SVM आउटपुट् मूल्यस्य थ्रेशोल्ड् 1 तथा -1 इति सेट् कृत्वा सीमान्तपरिधिं [-1,1] निर्माति ।
समर्थनसञ्चारयन्त्राणां उपयोगेन सौम्यस्य घातकस्य च कर्करोगनिदानस्य पूर्वानुमानं करणम्।
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline
sns.set_style('whitegrid')
from sklearn.datasets import load_breast_cancer
cancer = load_breast_cancer()
# 创建 DataFrame
col_names = list(cancer.feature_names)
col_names.append('target')
df = pd.DataFrame(np.c_[cancer.data, cancer.target], columns=col_names)
df.head()
df.info()print(cancer.target_names)
# ['malignant', 'benign']
# 数据描述:
df.describe()
# 统计摘要:
df.info()
sns.pairplot(df, hue='target', vars=[
'mean radius', 'mean texture', 'mean perimeter', 'mean area',
'mean smoothness', 'mean compactness', 'mean concavity',
'mean concave points', 'mean symmetry', 'mean fractal dimension'
])
sns.countplot(x=df['target'], label="Count")
plt.figure(figsize=(10, 8))
sns.scatterplot(x='mean area', y='mean smoothness', hue='target', data=df)
plt.figure(figsize=(20,10))
sns.heatmap(df.corr(), annot=True)
यन्त्रशिक्षणे समस्यानां समाधानं प्राप्तुं आदर्शप्रशिक्षणं महत्त्वपूर्णं सोपानम् अस्ति ।अधः वयं कथं उपयोगः करणीयः इति परिचयं करिष्यामःscikit-learn
मॉडल प्रशिक्षणं कृत्वा भिन्न-भिन्न-कर्नेल्-अन्तर्गतं समर्थन-सदिश-यन्त्रस्य (SVM) कार्यक्षमतां प्रदर्शयन्तु ।
प्रथमं अस्माभिः दत्तांशं सज्जीकर्तुं पूर्वसंसाधितुं च आवश्यकम् । दत्तांशपूर्वसंसाधनस्य कृते निम्नलिखितम् एकं कोड उदाहरणम् अस्ति ।
from sklearn.model_selection import cross_val_score, train_test_split
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler, MinMaxScaler
X = df.drop('target', axis=1)
y = df.target
print(f"'X' shape: {X.shape}")
print(f"'y' shape: {y.shape}")
# 'X' shape: (569, 30)
# 'y' shape: (569,)
pipeline = Pipeline([
('min_max_scaler', MinMaxScaler()),
('std_scaler', StandardScaler())
])
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
वयं यस्मिन् कोड् उपयुञ्ज्महे MinMaxScaler
तथाStandardScaler
दत्तांशं स्केल कुर्वन्तु। दत्तांशः प्रशिक्षण-परीक्षा-समूहेषु विभक्तः अस्ति, यत्र ३०% दत्तांशः परीक्षणार्थं उपयुज्यते ।
मॉडलस्य कार्यप्रदर्शनस्य मूल्याङ्कनार्थं वयं क print_score
function, यत् प्रशिक्षणस्य परीक्षणस्य च परिणामानां सटीकता, वर्गीकरणप्रतिवेदनं, भ्रममात्रिकं च आउटपुट् कर्तुं शक्नोति:
from sklearn.metrics import accuracy_score, confusion_matrix, classification_report
import pandas as pd
def print_score(clf, X_train, y_train, X_test, y_test, train=True):
if train:
pred = clf.predict(X_train)
clf_report = pd.DataFrame(classification_report(y_train, pred, output_dict=True))
print("Train Result:n================================================")
print(f"Accuracy Score: {accuracy_score(y_train, pred) * 100:.2f}%")
print("_______________________________________________")
print(f"CLASSIFICATION REPORT:n{clf_report}")
print("_______________________________________________")
print(f"Confusion Matrix: n {confusion_matrix(y_train, pred)}n")
else:
pred = clf.predict(X_test)
clf_report = pd.DataFrame(classification_report(y_test, pred, output_dict=True))
print("Test Result:n================================================")
print(f"Accuracy Score: {accuracy_score(y_test, pred) * 100:.2f}%")
print("_______________________________________________")
print(f"CLASSIFICATION REPORT:n{clf_report}")
print("_______________________________________________")
print(f"Confusion Matrix: n {confusion_matrix(y_test, pred)}n")
समर्थनसदिशयन्त्रं (SVM) एकः शक्तिशाली वर्गीकरण-एल्गोरिदम् अस्ति यस्य कार्यक्षमता हाइपरपैरामीटर्-द्वारा प्रभाविता भवति । निम्नलिखितरूपेण SVM इत्यस्य मुख्यमापदण्डानां परिचयः भविष्यति तथा च मॉडलप्रदर्शने तेषां प्रभावः भविष्यति।
'poly'
), अन्यैः कर्नेलैः उपेक्षितम् । इष्टतमानि हाइपरपैरामीटर् मूल्यानि जालसन्धानस्य माध्यमेन प्राप्तुं शक्यन्ते ।रेखीय कर्नेल् SVM अधिकांशस्थितीनां कृते उपयुक्तं भवति, विशेषतः यदा दत्तांशसमूहे बहुसंख्याकाः विशेषताः सन्ति । रेखीयकर्नेल् SVM इत्यस्य उपयोगेन निम्नलिखितम् एकं कोड उदाहरणम् अस्ति:
from sklearn.svm import LinearSVC
model = LinearSVC(loss='hinge', dual=True)
model.fit(X_train, y_train)
print_score(model, X_train, y_train, X_test, y_test, train=True)
print_score(model, X_train, y_train, X_test, y_test, train=False)
प्रशिक्षणस्य परीक्षणस्य च परिणामाः निम्नलिखितरूपेण सन्ति ।
प्रशिक्षणस्य परिणामः : १.
Accuracy Score: 86.18%
_______________________________________________
CLASSIFICATION REPORT:
0.0 1.0 accuracy macro avg weighted avg
precision 1.000000 0.819079 0.861809 0.909539 0.886811
recall 0.630872 1.000000 0.861809 0.815436 0.861809
f1-score 0.773663 0.900542 0.861809 0.837103 0.853042
support 149.000000 249.000000 0.861809 398.000000 398.000000
_______________________________________________
Confusion Matrix:
[[ 94 55]
[ 0 249]]
परीक्षाफलम् : १.
Accuracy Score: 89.47%
_______________________________________________
CLASSIFICATION REPORT:
0.0 1.0 accuracy macro avg weighted avg
precision 1.000000 0.857143 0.894737 0.928571 0.909774
recall 0.714286 1.000000 0.894737 0.857143 0.894737
f1-score 0.833333 0.923077 0.894737 0.878205 0.890013
support 63.000000 108.000000 0.894737 171.000000 171.000000
_______________________________________________
Confusion Matrix:
[[ 45 18]
[ 0 108]]
बहुपद कर्नेल् SVM अरैखिकदत्तांशस्य कृते उपयुक्तम् अस्ति । द्वितीयक्रमस्य बहुपदकर्नेल् इत्यस्य उपयोगेन निम्नलिखितम् एकं कोड उदाहरणम् अस्ति ।
from sklearn.svm import SVC
model = SVC(kernel='poly', degree=2, gamma='auto', coef0=1, C=5)
model.fit(X_train, y_train)
print_score(model, X_train, y_train, X_test, y_test, train=True)
print_score(model, X_train, y_train, X_test, y_test, train=False)
प्रशिक्षणस्य परीक्षणस्य च परिणामाः निम्नलिखितरूपेण सन्ति ।
प्रशिक्षणस्य परिणामः : १.
Accuracy Score: 96.98%
_______________________________________________
CLASSIFICATION REPORT:
0.0 1.0 accuracy macro avg weighted avg
precision 0.985816 0.961089 0.969849 0.973453 0.970346
recall 0.932886 0.991968 0.969849 0.962427 0.969849
f1-score 0.958621 0.976285 0.969849 0.967453 0.969672
support 149.000000 249.000000 0.969849 398.000000 398.000000
_______________________________________________
Confusion Matrix:
[[139 10]
[ 2 247]]
परीक्षाफलम् : १.
Accuracy Score: 97.08%
_______________________________________________
CLASSIFICATION REPORT:
0.0 1.0 accuracy macro avg weighted avg
precision 0.967742 0.972477 0.97076 0.970109 0.970733
recall 0.952381 0.981481 0.97076 0.966931 0.970760
f1-score 0.960000 0.976959 0.97076 0.968479 0.970711
support 63.000000 108.000000 0.97076 171.000000 171.000000
_______________________________________________
Confusion Matrix:
[[ 60 3]
[ 2 106]]
रेडियल बेसिस् फंक्शन् (RBF) कर्नेल् अरैखिकदत्तांशस्य संसाधनार्थं उपयुक्ताः सन्ति । RBF कोरस्य उपयोगेन निम्नलिखितम् एकं कोड उदाहरणम् अस्ति:
model = SVC(kernel='rbf', gamma=0.5, C=0.1)
model.fit(X_train, y_train)
print_score(model, X_train, y_train, X_test, y_test, train=True)
print_score(model, X_train, y_train, X_test, y_test, train=False)
प्रशिक्षणस्य परीक्षणस्य च परिणामाः निम्नलिखितरूपेण सन्ति ।
प्रशिक्षणस्य परिणामः : १.
Accuracy Score: 62.56%
_______________________________________________
CLASSIFICATION REPORT:
0.0 1.0 accuracy macro avg weighted avg
precision 0.0 0.625628 0.625628 0.312814 0.392314
recall 0.0 1.000000 0.625628 0.500000 0.625628
f1-score 0.0 0.769231 0.625628 0.384615 0.615385
support 149.0 249.0 0.625628 398.0 398.0
_______________________________________________
Confusion Matrix:
[[ 0 149]
[ 0 249]]
परीक्षाफलम् : १.
Accuracy Score: 64.97%
_______________________________________________
CLASSIFICATION REPORT:
0.0 1.0 accuracy macro avg weighted avg
precision 0.0 0.655172 0.649661 0.327586 0.409551
recall 0.0 1.000000 0.649661 0.500000 0.649661
f1-score 0.0 0.792453 0.649661 0.396226 0.628252
support 63.0 108.0 0.649661 171.0 171.0
_______________________________________________
Confusion Matrix:
[[ 0 63]
[ 0 108]]
उपर्युक्तस्य मॉडल् प्रशिक्षणस्य मूल्याङ्कनस्य च प्रक्रियायाः माध्यमेन वयं भिन्न-भिन्न-SVM-कर्नेल्-इत्यस्य कार्यक्षमतायाः भेदं अवलोकयितुं शक्नुमः । रेखीय कर्नेल् SVM सटीकतायां प्रशिक्षणसमये च उत्तमं प्रदर्शनं करोति, तथा च उच्चतरदत्तांशपरिमाणयुक्तानां परिस्थितीनां कृते उपयुक्तम् अस्ति । बहुपद कर्नेल् SVM तथा RBF कर्नेल् SVM इत्येतयोः अरैखिकदत्तांशयोः उत्तमं प्रदर्शनं भवति, परन्तु कतिपयेषु पैरामीटर् सेटिंग्स् इत्यस्य अन्तर्गतं अतिफिटिंग् भवितुं शक्नोति । आदर्शस्य कार्यक्षमतायाः उन्नयनार्थं समुचितकर्नेल्-हाइपरपैरामीटर्-चयनं महत्त्वपूर्णम् अस्ति ।
डिजिटल इनपुट : SVM निवेशदत्तांशः संख्यात्मकः इति कल्पयति । यदि निवेशदत्तांशः श्रेणीगतचराः सन्ति तर्हि भवद्भिः तान् द्विचक्रीय-डमी-चरयोः (प्रतिवर्गे एकः चरः) परिवर्तयितुं आवश्यकः भवेत् ।
द्विचक्रीय वर्गीकरण :मूलभूतं SVM द्विचक्रीयवर्गीकरणसमस्यानां कृते उपयुक्तम् अस्ति । यद्यपि SVM मुख्यतया द्विचक्रीयवर्गीकरणाय उपयुज्यते तथापि प्रतिगमनस्य बहुवर्गवर्गीकरणस्य च विस्तारिताः संस्करणाः अपि सन्ति ।
X_train = pipeline.fit_transform(X_train)
X_test = pipeline.transform(X_test)
निम्नलिखितम् भिन्न-भिन्न-SVM-कर्नेल्-प्रशिक्षण-परीक्षण-परिणामान् दर्शयति ।
रेखीय कर्नेल SVM
print("=======================Linear Kernel SVM==========================")
model = SVC(kernel='linear')
model.fit(X_train, y_train)
print_score(model, X_train, y_train, X_test, y_test, train=True)
print_score(model, X_train, y_train, X_test, y_test, train=False)
प्रशिक्षणस्य परिणामः : १.
Accuracy Score: 98.99%
_______________________________________________
CLASSIFICATION REPORT:
0.0 1.0 accuracy macro avg weighted avg
precision 1.000000 0.984190 0.98995 0.992095 0.990109
recall 0.973154 1.000000 0.98995 0.986577 0.989950
f1-score 0.986395 0.992032 0.98995 0.989213 0.989921
support 149.000000 249.000000 0.98995 398.000000 398.000000
_______________________________________________
Confusion Matrix:
[[145 4]
[ 0 249]]
测试结果
Accuracy Score: 97.66%
_______________________________________________
CLASSIFICATION REPORT:
0.0 1.0 accuracy macro avg weighted avg
precision 0.968254 0.981481 0.976608 0.974868 0.976608
recall 0.968254 0.981481 0.976608 0.974868 0.976608
f1-score 0.968254 0.981481 0.976608 0.974868 0.976608
support 63.000000 108.000000 0.976608 171.000000 171.000000
_______________________________________________
Confusion Matrix:
[[ 61 2]
[ 2 106]]
print("=======================Polynomial Kernel SVM==========================")
from sklearn.svm import SVC
model = SVC(kernel='poly', degree=2, gamma='auto')
model.fit(X_train, y_train)
print_score(model, X_train, y_train, X_test, y_test, train=True)
print_score(model, X_train, y_train, X_test, y_test, train=False)
प्रशिक्षणस्य परिणामः : १.
Accuracy Score: 85.18%
_______________________________________________
CLASSIFICATION REPORT:
0.0 1.0 accuracy macro avg weighted avg
precision 0.978723 0.812500 0.851759 0.895612 0.874729
recall 0.617450 0.991968 0.851759 0.804709 0.851759
f1-score 0.757202 0.893309 0.851759 0.825255 0.842354
support 149.000000 249.000000 0.851759 398.000000 398.000000
_______________________________________________
Confusion Matrix:
[[ 92 57]
[ 2 247]]
测试结果:
Accuracy Score: 82.46%
_______________________________________________
CLASSIFICATION REPORT:
0.0 1.0 accuracy macro avg weighted avg
precision 0.923077 0.795455 0.824561 0.859266 0.842473
recall 0.571429 0.972222 0.824561 0.771825 0.824561
f1-score 0.705882 0.875000 0.824561 0.790441 0.812693
support 63.000000 108.000000 0.824561 171.000000 171.000000
_______________________________________________
Confusion Matrix:
[[ 36 27]
[ 3 105]]
print("=======================Radial Kernel SVM==========================")
from sklearn.svm import SVC
model = SVC(kernel='rbf', gamma=1)
model.fit(X_train, y_train)
print_score(model, X_train, y_train, X_test, y_test, train=True)
print_score(model, X_train, y_train, X_test, y_test, train=False)
प्रशिक्षणस्य परिणामः : १.
Accuracy Score: 100.00%
_______________________________________________
CLASSIFICATION REPORT:
0.0 1.0 accuracy macro avg weighted avg
precision 1.0 1.0 1.0 1.0 1.0
recall 1.0 1.0 1.0 1.0 1.0
f1-score 1.0 1.0 1.0 1.0 1.0
support 149.0 249.0 1.0 398.0 398.0
_______________________________________________
Confusion Matrix:
[[149 0]
[ 0 249]]
测试结果:
Accuracy Score: 63.74%
_______________________________________________
CLASSIFICATION REPORT:
0.0 1.0 accuracy macro avg weighted avg
precision 1.000000 0.635294 0.637427 0.817647 0.769659
recall 0.015873 1.000000 0.637427 0.507937 0.637427
f1-score 0.031250 0.776978 0.637427 0.404114 0.502236
support 63.000000 108.000000 0.637427 171.000000 171.000000
_______________________________________________
Confusion Matrix:
[[ 1 62]
[ 0 108]]
from sklearn.model_selection import GridSearchCV
param_grid = {'C': [0.01, 0.1, 0.5, 1, 10, 100],
'gamma': [1, 0.75, 0.5, 0.25, 0.1, 0.01, 0.001],
'kernel': ['rbf', 'poly', 'linear']}
grid = GridSearchCV(SVC(), param_grid, refit=True, verbose=1, cv=5)
grid.fit(X_train, y_train)
best_params = grid.best_params_
print(f"Best params: {best_params}")
svm_clf = SVC(**best_params)
svm_clf.fit(X_train, y_train)
print_score(svm_clf, X_train, y_train, X_test, y_test, train=True)
print_score(svm_clf, X_train, y_train, X_test, y_test, train=False)
प्रशिक्षणस्य परिणामः : १.
Accuracy Score: 98.24%
_______________________________________________
CLASSIFICATION REPORT:
0.0 1.0 accuracy macro avg weighted avg
precision 0.986301 0.980159 0.982412 0.983230 0.982458
recall 0.966443 0.991968 0.982412 0.979205 0.982412
f1-score 0.976271 0.986028 0.982412 0.981150 0.982375
support 149.000000 249.000000 0.982412 398.000000 398.000000
_______________________________________________
Confusion Matrix:
[[144 5]
[ 2 247]]
测试结果:
Accuracy Score: 98.25%
_______________________________________________
CLASSIFICATION REPORT:
0.0 1.0 accuracy macro avg weighted avg
precision 0.983871 0.981651 0.982456 0.982761 0.982469
recall 0.968254 0.990741 0.982456 0.979497 0.982456
f1-score 0.976000 0.986175 0.982456 0.981088 0.982426
support 63.000000 108.000000 0.982456 171.000000 171.000000
_______________________________________________
Confusion Matrix:
[[ 61 2]
[ 1 107]]
प्रधानघटकविश्लेषणम् (PCA) एकः तकनीकः अस्ति या न्यून-आयामी-अन्तरिक्षे आँकडानां प्रक्षेपणं कृत्वा रेखीय-आयामी-कमीकरणं साधयति विशिष्टानि चरणानि निम्नलिखितरूपेण सन्ति ।
यतो हि उच्च-आयामी-दत्तांशः प्रत्यक्षतया दृश्यमानः कठिनः भवति, अतः प्रथमद्वयं मुख्यघटकं अन्वेष्टुं वयं PCA इत्यस्य उपयोगं कर्तुं शक्नुमः तथा च द्वि-आयामी-अन्तरिक्षे दत्तांशस्य दृश्यीकरणं कर्तुं शक्नुमः एतत् प्राप्तुं प्रथमं दत्तांशं सामान्यीकृत्य प्रत्येकस्य विशेषतायाः विचरणं एककविचरणं भवति ।
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import train_test_split
from sklearn.decomposition import PCA
import matplotlib.pyplot as plt
# 数据标准化
scaler = StandardScaler()
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)
# PCA 降维
pca = PCA(n_components=2)
X_train = pca.fit_transform(X_train)
X_test = pca.transform(X_test)
# 可视化前两个主成分
plt.figure(figsize=(8,6))
plt.scatter(X_train[:,0], X_train[:,1], c=y_train, cmap='plasma')
plt.xlabel('First Principal Component')
plt.ylabel('Second Principal Component')
plt.show()
प्रथमयोः मुख्यघटकयोः माध्यमेन वयं द्विमात्रिकस्थाने दत्तांशबिन्दुविभिन्नवर्गान् सहजतया पृथक् कर्तुं शक्नुमः ।
यद्यपि आयामिकतानिवृत्तिः शक्तिशाली भवति तथापि घटकानां अर्थः प्रत्यक्षतया दुर्बोधः भवति । प्रत्येकं घटकं मूलविशेषतानां संयोजनेन सह सङ्गच्छते, यत् PCA वस्तुं फिट् कृत्वा प्राप्तुं शक्यते ।
घटकसम्बद्धगुणाः अन्तर्भवन्ति : १.
मॉडल् प्रशिक्षणार्थं समर्थनसदिशयन्त्राणां (SVM) उपयोगं कुर्वन् अस्माकं सर्वोत्तमप्रतिरूपं प्राप्तुं हाइपरपैरामीटर् समायोजयितुं आवश्यकम् । ग्रिड् अन्वेषणस्य (GridSearchCV) उपयोगेन SVM मापदण्डानां समायोजनाय निम्नलिखितम् नमूनासङ्केतः अस्ति:
from sklearn.svm import SVC
from sklearn.model_selection import GridSearchCV
# 定义参数网格
param_grid = {'C': [0.01, 0.1, 0.5, 1, 10, 100],
'gamma': [1, 0.75, 0.5, 0.25, 0.1, 0.01, 0.001],
'kernel': ['rbf', 'poly', 'linear']}
# 网格搜索
grid = GridSearchCV(SVC(), param_grid, refit=True, verbose=1, cv=5)
grid.fit(X_train, y_train)
best_params = grid.best_params_
print(f"Best params: {best_params}")
# 使用最佳参数训练模型
svm_clf = SVC(**best_params)
svm_clf.fit(X_train, y_train)
प्रशिक्षणस्य परिणामः : १.
Accuracy Score: 96.48%
_______________________________________________
CLASSIFICATION REPORT:
0.0 1.0 accuracy macro avg weighted avg
precision 0.978723 0.957198 0.964824 0.967961 0.965257
recall 0.926174 0.987952 0.964824 0.957063 0.964824
f1-score 0.951724 0.972332 0.964824 0.962028 0.964617
support 149.000000 249.000000 0.964824 398.000000 398.000000
_______________________________________________
Confusion Matrix:
[[138 11]
[ 3 246]]
测试结果:
Accuracy Score: 96.49%
_______________________________________________
CLASSIFICATION REPORT:
0.0 1.0 accuracy macro avg weighted avg
precision 0.967213 0.963636 0.964912 0.965425 0.964954
recall 0.936508 0.981481 0.964912 0.958995 0.964912
f1-score 0.951613 0.972477 0.964912 0.962045 0.964790
support 63.000000 108.000000 0.964912 171.000000 171.000000
_______________________________________________
Confusion Matrix:
[[ 59 4]
[ 2 106]]
अस्मिन् लेखे वयं निम्नलिखितम् ज्ञातवन्तः।
refer to : १.शुरुआती कृते Vector Machine & PCA Tutorial समर्थनं कुर्वन्तु
मम सम्बद्धानां स्तम्भानां अनुशंसा कुर्वन्तु: