प्रौद्योगिकी साझेदारी

[यन्त्रशिक्षणम्] यन्त्रशिक्षणे समर्थनसदिशयन्त्राणां प्रधानघटकविश्लेषणस्य च अनुप्रयोगः

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

लेख निर्देशिका

समर्थनसदिशयन्त्रम् (SVM) रेखीय-अरेखीयवर्गीकरणाय, प्रतिगमनाय, बहिर्मुखीयपरिचयाय च उपयुक्तं शक्तिशाली बहुमुखी च यन्त्रशिक्षणप्रतिरूपम् अस्ति । अयं लेखः समर्थनसदिशयन्त्रस्य एल्गोरिदमस्य परिचयं करिष्यति तथा च scikit-learn इत्यस्मिन् तस्य कार्यान्वयनम्, तथा च संक्षेपेण मुख्यघटकविश्लेषणस्य अन्वेषणं करिष्यति तथा च scikit-learn इत्यस्मिन् तस्य अनुप्रयोगस्य अन्वेषणं करिष्यति

1. समर्थनसदिशयन्त्राणां अवलोकनम्

समर्थनसदिशयन्त्रं (SVM) यन्त्रशिक्षणक्षेत्रे व्यापकरूपेण प्रयुक्तः एल्गोरिदम् अस्ति, यः न्यूनगणनासंसाधनैः सह महत्त्वपूर्णसटीकतां प्रदातुं तस्य विशेषतायाः अनुकूलः अस्ति SVM इत्यस्य उपयोगः वर्गीकरणस्य प्रतिगमनकार्यस्य च कृते कर्तुं शक्यते, परन्तु वर्गीकरणसमस्यासु अधिकतया उपयुज्यते ।

समर्थनसदिशयन्त्रं किम् ?

समर्थनसदिशयन्त्राणां लक्ष्यं भवति यत्... एन.एनन॰ आयामी अन्तरिक्ष ( . एन.एनन॰ विशेषतानां संख्या अस्ति) इति अतिविमानं अन्वेष्टुं यत् दत्तांशबिन्दून् स्पष्टतया भेदं कर्तुं शक्नोति । एतत् अतिविमानं वर्गीकरणस्य दृढतां सुनिश्चित्य भिन्नवर्गस्य दत्तांशबिन्दून् पृथक् कर्तुं अतिविमानात् यथासम्भवं दूरं च कर्तुं शक्नोति

अत्र चित्रविवरणं सम्मिलितं कुर्वन्तु

दत्तांशबिन्दून् प्रभावी पृथक्करणं प्राप्तुं बहुविधाः अतिविमानाः विद्यन्ते । अस्माकं लक्ष्यं अधिकतममार्जिनयुक्तं अतिविमानं चिन्वन्तु, अर्थात् द्वयोः वर्गयोः अधिकतमं दूरं भवति । मार्जिनस्य अधिकतमीकरणेन वर्गीकरणस्य सटीकतायां सुधारः भवति ।

अतिविमानाः समर्थनसदिशः च

अत्र चित्रविवरणं सम्मिलितं कुर्वन्तु

अतिविमानः एकः निर्णयसीमा अस्ति यः दत्तांशबिन्दून् विभजति । अतिविमानस्य उभयतः स्थिताः दत्तांशबिन्दवः भिन्न-भिन्न-वर्गेषु वर्गीकृताः भवितुम् अर्हन्ति । अतिविमानस्य आयामाः विशेषतानां संख्यायाः उपरि निर्भरं कुर्वन्ति : यदि निवेशविशेषताः २ सन्ति तर्हि अतिविमानं ऋजुरेखा भवति यदि अतिविमानं द्विमात्रिकं विमानं भवति यदा विशेषतानां संख्या ३ अधिका भवति तदा अतिविमानं सहजतया अवगन्तुं कठिनं भवति ।

अत्र चित्रविवरणं सम्मिलितं कुर्वन्तु

समर्थनसदिशः अतिविमानस्य समीपस्थं तान् बिन्दून् निर्दिशन्ति, ये अतिविमानस्य स्थितिं दिशां च प्रभावितयन्ति । एतैः समर्थनसदिशैः वयं वर्गीकरणस्य मार्जिनं अधिकतमं कर्तुं शक्नुमः । समर्थनसदिशं हृत्वा अतिविमानस्य स्थितिः परिवर्तते, अतः ते SVM ​​निर्मातुं महत्त्वपूर्णाः सन्ति ।

बृहत् मार्जिन अंतर्ज्ञान

लॉजिस्टिक रिग्रेशन इत्यस्मिन् वयं रेखीय फंक्शन् इत्यस्य आउटपुट् मूल्यं [0,1] इति परिधिमध्ये संपीडयितुं तथा च थ्रेशोल्ड् (0.5) इत्यस्य आधारेण लेबल् असाइन कर्तुं सिग्मोइड् फंक्शन् इत्यस्य उपयोगं कुर्मः SVM मध्ये वयं वर्गीकरणस्य निर्णयार्थं रेखीयफलनस्य आउटपुट् मूल्यस्य उपयोगं कुर्मः: यदि आउटपुट् 1 इत्यस्मात् अधिकं भवति तर्हि यदि आउटपुट् -1 अस्ति तर्हि अन्यस्य क्लास् इत्यस्य भवति SVM आउटपुट् मूल्यस्य थ्रेशोल्ड् 1 तथा -1 इति सेट् कृत्वा सीमान्तपरिधिं [-1,1] निर्माति ।

2. दत्तांशपूर्वसंसाधनं दृश्यीकरणं च

समर्थनसञ्चारयन्त्राणां उपयोगेन सौम्यस्य घातकस्य च कर्करोगनिदानस्य पूर्वानुमानं करणम्।

दत्तांशसमूहस्य विषये मूलभूतसूचना

  • विशेषतानां संख्या ३० अस्ति, यथा - १.
    • त्रिज्या (केन्द्रतः परिधिबिन्दुपर्यन्तं औसतं दूरम्) २.
    • बनावट (ग्रेस्केल मूल्यानां मानकविचलनम्) २.
    • परिधिः
    • क्षेत्र
    • स्निग्धता (त्रिज्यादीर्घतायां स्थानीयविविधता) २.
    • संकुचितता (परिधि ^ 2 / क्षेत्रफल - 1.0)
    • अवतलता (समोच्चस्य विषादितभागस्य तीव्रता) २.
    • डिम्पल्स (समोच्चस्य अवतलभागानाम् संख्या) २.
    • समरूपता
    • भग्न आयाम ("तटरेखा सन्निकटन" - १) २.
  • दत्तांशसमूहे ५६९ नमूनानि सन्ति, वर्गवितरणं च २१२ घातकनमूनानि ३५७ सौम्यनमूनानि च सन्ति ।
  • लक्ष्यवर्गः : १.
    • घातक
    • सौम्य

आवश्यकपुस्तकालयान् आयातयन्तु

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

%matplotlib inline
sns.set_style('whitegrid')
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

दत्तांशसमूहं लोडं कुर्वन्तु

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()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

दत्तांश अवलोकन

df.info()print(cancer.target_names)
# ['malignant', 'benign']

# 数据描述:
df.describe()
# 统计摘要:
df.info()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

दत्तांशदृश्यीकरणम्

विशेषतायुग्मानां स्कैटरप्लॉट् आकृतिः
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'
])
  • 1
  • 2
  • 3
  • 4
  • 5
श्रेणी वितरण बार चार्ट
sns.countplot(x=df['target'], label="Count")
  • 1

अत्र चित्रविवरणं सम्मिलितं कुर्वन्तु

औसतक्षेत्रस्य विकीर्णनचित्रं वर्सेस् औसतसुचारुता
plt.figure(figsize=(10, 8))
sns.scatterplot(x='mean area', y='mean smoothness', hue='target', data=df)
  • 1
  • 2

अत्र चित्रविवरणं सम्मिलितं कुर्वन्तु

चरयोः सहसंबन्धानां तापनक्शा
plt.figure(figsize=(20,10))
sns.heatmap(df.corr(), annot=True)
  • 1
  • 2

अत्र चित्रविवरणं सम्मिलितं कुर्वन्तु

3. आदर्शप्रशिक्षणम् (समस्यानिराकरणम्) २.

यन्त्रशिक्षणे समस्यानां समाधानं प्राप्तुं आदर्शप्रशिक्षणं महत्त्वपूर्णं सोपानम् अस्ति ।अधः वयं कथं उपयोगः करणीयः इति परिचयं करिष्यामः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)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

वयं यस्मिन् कोड् उपयुञ्ज्महे 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")
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

समर्थन सदिश यन्त्रम् (SVM) .

समर्थनसदिशयन्त्रं (SVM) एकः शक्तिशाली वर्गीकरण-एल्गोरिदम् अस्ति यस्य कार्यक्षमता हाइपरपैरामीटर्-द्वारा प्रभाविता भवति । निम्नलिखितरूपेण SVM इत्यस्य मुख्यमापदण्डानां परिचयः भविष्यति तथा च मॉडलप्रदर्शने तेषां प्रभावः भविष्यति।

  • ग पैरामीटर्स : प्रशिक्षणबिन्दून् सम्यक् वर्गीकरणं कृत्वा सुचारुनिर्णयसीमाः भवितुं च मध्ये व्यापारं नियन्त्रयति।लघुतरम् सीसी(शिथिलः) दुर्वर्गीकरणव्ययः (दण्डः) न्यूनं (मृदुमार्जिनं) करोति, यदा तु बृहत्तरः सीसी(कठोर) दुर्वर्गीकरणं अधिकं महत्त्वपूर्णं (कठिनमार्जिनं) करोति, यत् मॉडलं निवेशदत्तांशस्य अधिकसख्तीपूर्वकं व्याख्यां कर्तुं बाध्यते ।
  • गामा पैरामीटर : एकस्य प्रशिक्षणसमूहस्य प्रभावस्य व्याप्तिम् नियन्त्रयन्तु।बृहत्तरम् γ गाम्माγ प्रभावस्य व्याप्तिः समीपस्थं (समीपस्थेषु दत्तांशबिन्दुषु अधिकं भारं भवति), लघुतरं कुर्वन्तु γ गाम्माγ व्याप्तिम् व्यापकं कुर्वन्तु (व्यापकं समाधानम्)।
  • डिग्री पैरामीटर: बहुपद कर्नेल फ़ंक्शन ('poly' ), अन्यैः कर्नेलैः उपेक्षितम् । इष्टतमानि हाइपरपैरामीटर् मूल्यानि जालसन्धानस्य माध्यमेन प्राप्तुं शक्यन्ते ।

रेखीय कर्नेल SVM

रेखीय कर्नेल् 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)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

प्रशिक्षणस्य परीक्षणस्य च परिणामाः निम्नलिखितरूपेण सन्ति ।

प्रशिक्षणस्य परिणामः : १.

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]]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

परीक्षाफलम् : १.

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]]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

बहुपद कर्नेल SVM

बहुपद कर्नेल् 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)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

प्रशिक्षणस्य परीक्षणस्य च परिणामाः निम्नलिखितरूपेण सन्ति ।

प्रशिक्षणस्य परिणामः : १.

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]]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

परीक्षाफलम् : १.

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]]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

रेडियल आधार कार्य (RBF) कर्नेल SVM

रेडियल बेसिस् फंक्शन् (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)
  • 1
  • 2
  • 3
  • 4
  • 5

प्रशिक्षणस्य परीक्षणस्य च परिणामाः निम्नलिखितरूपेण सन्ति ।

प्रशिक्षणस्य परिणामः : १.

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]]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

परीक्षाफलम् : १.

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]]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

सारांशं कुरुत

उपर्युक्तस्य मॉडल् प्रशिक्षणस्य मूल्याङ्कनस्य च प्रक्रियायाः माध्यमेन वयं भिन्न-भिन्न-SVM-कर्नेल्-इत्यस्य कार्यक्षमतायाः भेदं अवलोकयितुं शक्नुमः । रेखीय कर्नेल् SVM सटीकतायां प्रशिक्षणसमये च उत्तमं प्रदर्शनं करोति, तथा च उच्चतरदत्तांशपरिमाणयुक्तानां परिस्थितीनां कृते उपयुक्तम् अस्ति । बहुपद कर्नेल् SVM तथा RBF कर्नेल् SVM इत्येतयोः अरैखिकदत्तांशयोः उत्तमं प्रदर्शनं भवति, परन्तु कतिपयेषु पैरामीटर् सेटिंग्स् इत्यस्य अन्तर्गतं अतिफिटिंग् भवितुं शक्नोति । आदर्शस्य कार्यक्षमतायाः उन्नयनार्थं समुचितकर्नेल्-हाइपरपैरामीटर्-चयनं महत्त्वपूर्णम् अस्ति ।

4. SVM दत्तांशस्य निर्माणम्

डिजिटल इनपुट : SVM निवेशदत्तांशः संख्यात्मकः इति कल्पयति । यदि निवेशदत्तांशः श्रेणीगतचराः सन्ति तर्हि भवद्भिः तान् द्विचक्रीय-डमी-चरयोः (प्रतिवर्गे एकः चरः) परिवर्तयितुं आवश्यकः भवेत् ।

द्विचक्रीय वर्गीकरण :मूलभूतं SVM द्विचक्रीयवर्गीकरणसमस्यानां कृते उपयुक्तम् अस्ति । यद्यपि SVM मुख्यतया द्विचक्रीयवर्गीकरणाय उपयुज्यते तथापि प्रतिगमनस्य बहुवर्गवर्गीकरणस्य च विस्तारिताः संस्करणाः अपि सन्ति ।

X_train = pipeline.fit_transform(X_train)
X_test = pipeline.transform(X_test)
  • 1
  • 2

आदर्श प्रशिक्षणं मूल्याङ्कनं च

निम्नलिखितम् भिन्न-भिन्न-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)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

प्रशिक्षणस्य परिणामः : १.

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]]
  • 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
बहुपद कर्नेल SVM
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)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

प्रशिक्षणस्य परिणामः : १.

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]]
  • 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
रेडियल आधार फ़ंक्शन कर्नेल SVM
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)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

प्रशिक्षणस्य परिणामः : १.

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]]
  • 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

समर्थन सदिश मशीन अतिपैरामीटर ट्यूनिंग

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)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

प्रशिक्षणस्य परिणामः : १.

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]]
  • 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

5. प्रधान घटक विश्लेषण

पीसीए इत्यस्य परिचयः

प्रधानघटकविश्लेषणम् (PCA) एकः तकनीकः अस्ति या न्यून-आयामी-अन्तरिक्षे आँकडानां प्रक्षेपणं कृत्वा रेखीय-आयामी-कमीकरणं साधयति विशिष्टानि चरणानि निम्नलिखितरूपेण सन्ति ।

  • एकवचनमूल्यविघटनस्य प्रयोगं कुर्वन्तु: एकलमूल्यविघटनद्वारा न्यून-आयामी-अन्तरिक्षे आँकडानां परियोजना।
  • अनिरीक्षितं शिक्षणम्: 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()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

अत्र चित्रविवरणं सम्मिलितं कुर्वन्तु

प्रथमयोः मुख्यघटकयोः माध्यमेन वयं द्विमात्रिकस्थाने दत्तांशबिन्दुविभिन्नवर्गान् सहजतया पृथक् कर्तुं शक्नुमः ।

घटकान् व्याख्यातव्यम्

यद्यपि आयामिकतानिवृत्तिः शक्तिशाली भवति तथापि घटकानां अर्थः प्रत्यक्षतया दुर्बोधः भवति । प्रत्येकं घटकं मूलविशेषतानां संयोजनेन सह सङ्गच्छते, यत् PCA वस्तुं फिट् कृत्वा प्राप्तुं शक्यते ।

घटकसम्बद्धगुणाः अन्तर्भवन्ति : १.

  • घटक स्कोर: परिवर्तितं चरमूल्यम्।
  • भारः (भारः) २.: विशेषतानां संयोजनभारः।
  • दत्तांशसंपीडनं सूचनासंरक्षणं च: मुख्यसूचनाः धारयन् PCA मार्गेण आँकडासंपीडनं भवति।
  • शोरछननम्: आयामिकतानिवृत्तिप्रक्रियायां कोलाहलं छानयितुं शक्यते।
  • विशेषता निष्कर्षणं अभियांत्रिकी च: नूतनानि विशेषतानि निष्कासयितुं निर्माणं च कर्तुं प्रयुक्तम् ।

समर्थनसदिशयन्त्रस्य (SVM) प्रतिरूपस्य पैरामीटरसमायोजनम्

मॉडल् प्रशिक्षणार्थं समर्थनसदिशयन्त्राणां (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)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

प्रशिक्षणस्य परिणामः : १.

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]]
  • 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

6. सारांशः

अस्मिन् लेखे वयं निम्नलिखितम् ज्ञातवन्तः।

  • समर्थन सदिश यन्त्रम् (SVM) .: SVM इत्यस्य मूलभूतसंकल्पनाः तस्य कार्यान्वयनञ्च पायथन् मध्ये अवगच्छन्तु।
  • SVM कर्नेल कार्य: रेखीय, त्रिज्या आधारफलन (RBF) तथा बहुपदी कर्नेल फलन सहित।
  • दत्तांशसज्जीकरणम्: SVM एल्गोरिदम् कृते दत्तांशं कथं सज्जीकर्तव्यम्।
  • अतिपैरामीटर ट्यूनिंग: ग्रिड् अन्वेषणद्वारा SVM हाइपरपैरामीटर्स् ट्यूनिङ्ग्।
  • प्रधान घटक विश्लेषण (PCA) 1.1.: दत्तांशजटिलतां न्यूनीकर्तुं PCA इत्यस्य उपयोगः कथं भवति तथा च scikit-learn इत्यत्र पुनः उपयोगः करणीयः।

refer to : १.शुरुआती कृते Vector Machine & PCA Tutorial समर्थनं कुर्वन्तु
मम सम्बद्धानां स्तम्भानां अनुशंसा कुर्वन्तु:


अत्र चित्रविवरणं सम्मिलितं कुर्वन्तु