Makîneyên Vektora Piştgiriyê (SVM) çînek hêzdar û berbelav a algorîtmayên fêrbûna makîneya çavdêrîkirî ne ku bi taybetî ji bo karên dabeşkirinê bi bandor in. Pirtûkxaneyên wekî scikit-learn li Python pêkanînên xurt ên SVM peyda dikin, ku wê ji bo bijîjk û lêkolîneran re bigihînin hev. Ev bersiv dê ronî bike ka fêrbûna scikit çawa dikare were bikar anîn da ku dabeşkirina SVM-ê bicîh bîne, fonksiyonên sereke yên têkildar eşkere bike û mînakên ronîdar peyda bike.
Destpêka SVM
Makîneyên Vektora Piştgiriyê bi dîtina hîperplana ku çêtirîn daneyan li çînên cihêreng vediqetîne tevdigerin. Di cîhekî du-alî de, ev hîperplan bi tenê xêzek e, lê di pîvanên bilind de, ew dibe balafir an hîperplane. Hîperplana herî baş ew e ku marjîna di navbera her du çînan de herî zêde dike, ku li wir marjînal wekî dûrahiya di navbera hîperplane û nuqteyên daneyê yên herî nêzîk ji her du çînan tê pênase kirin, ku wekî vektorên piştgirî têne zanîn.
Scikit-hînbûn û SVM
Scikit-learn pirtûkxaneyek Python a hêzdar e ji bo fêrbûna makîneyê ku ji bo derxistina daneyan û analîzkirina daneyê amûrên hêsan û bikêr peyda dike. Ew li ser NumPy, SciPy, û matplotlib hatî çêkirin. Modula `svm` di nav scikit-learn de pêkanîna algorîtmayên SVM peyda dike.
Karên Keyanî
1. `svm.SVC`: Ev çîna sereke ye ji bo pêkanîna dabeşkirinê bi karanîna SVM. SVC tê wateya Dabeşkirina Vektora Piştgiriyê.
2. `fit`: Ev rêbaz ji bo perwerdekirina modela li ser daneyên hatî dayîn tê bikar anîn.
3. `pêşbînîkirin`: Dema ku model were perwerde kirin, ev rêbaz ji bo pêşbînkirina etîketên pola ji bo daneyên ceribandinê yên hatî dayîn tê bikar anîn.
4. `score`: Ev rêbaz ji bo nirxandina rastbûna modela li ser daneyên ceribandinê tê bikar anîn.
5. `GridSearchCV`: Ev ji bo birêkûpêkkirina hîperparameterê tê bikar anîn da ku ji bo modela SVM baştirîn parametreyan bibîne.
Bi scikit-learn re Tesnîfkirina SVM-ê bicîh dikin
Ka em gavên ku di pêkanîna dabeşkirina SVM-ê de bi karanîna scikit-learn-ê ve girêdayî ne bifikirin.
Gav 1: Importkirina Pirtûkxane
Pêşîn, pirtûkxaneyên pêwîst derxînin:
python import numpy as np import matplotlib.pyplot as plt from sklearn import datasets from sklearn.model_selection import train_test_split from sklearn.preprocessing import StandardScaler from sklearn.svm import SVC from sklearn.metrics import classification_report, confusion_matrix
Gav 2: Barkirina Dataset
Ji bo mebestên xwenîşandanê, em ê databasa Iris, danehevek naskirî ya di civata fêrbûna makîneyê de bikar bînin:
python # Load the Iris dataset iris = datasets.load_iris() X = iris.data y = iris.target
Gav 3: Parçekirina Dataset
Danûstendinê li komên perwerdehî û ceribandinê veqetînin:
python # Split the data into training and testing sets X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
Gav 4: Pîvana Taybetmendiyê
Pîvana taybetmendiyê ji bo SVM-ê girîng e ji ber ku ew ji pîvana taybetmendiyên têketinê hesas e:
python # Standardize features by removing the mean and scaling to unit variance scaler = StandardScaler() X_train = scaler.fit_transform(X_train) X_test = scaler.transform(X_test)
Gav 5: Perwerdehiya Modela SVM
Dabeşkera SVM-ê destnîşan bikin û li ser daneyên perwerdehiyê perwerde bikin:
python # Create an instance of SVC and fit the data svc = SVC(kernel='linear', C=1.0) svc.fit(X_train, y_train)
Li vir, me kernelek xêzik bikar anî û pîvana rêkûpêkkirinê `C` li 1.0 danî. Parametreya kernel cureya hîperplana ku ji bo veqetandina daneyan tê bikar anîn diyar dike. Kernelên hevpar 'xêz', 'poly' (polnomial), 'rbf' (fonksiyona bingehîn a radîal), û 'sigmoîd' hene.
Gav 6: Çêkirina Pêşbîniyan
Modela perwerdekirî bikar bînin da ku li ser daneyên ceribandinê pêşbîniyan bikin:
python # Predict the class labels for the test set y_pred = svc.predict(X_test)
Gav 7: Nirxandina Modelê
Performansa modelê bi karanîna metrîkên wekî matrixa tevliheviyê û rapora dabeşkirinê binirxînin:
python # Evaluate the model print(confusion_matrix(y_test, y_pred)) print(classification_report(y_test, y_pred))
Matrixa tevliheviyê kurteyek encamên pêşbîniyê peyda dike, dema ku rapora dabeşkirinê ji bo her polê rastbûn, bibîranîn, xala F1, û piştgirî vedigire.
Bi GridSearchCV ve Tunekirina Hyperparameterê
Rêzkirina hîperparameterê ji bo xweşbînkirina performansa modelek SVM pêdivî ye. 'GridSearchCV' ya Scikit-learn dikare were bikar anîn da ku li ser tevnek parametreyek diyarkirî lêgerînek berfireh pêk bîne:
python from sklearn.model_selection import GridSearchCV # Define the parameter grid param_grid = { 'C': [0.1, 1, 10, 100], 'gamma': [1, 0.1, 0.01, 0.001], 'kernel': ['rbf'] } # Create a GridSearchCV instance grid = GridSearchCV(SVC(), param_grid, refit=True, verbose=2) grid.fit(X_train, y_train) # Print the best parameters and the corresponding score print("Best parameters found: ", grid.best_params_) print("Best score: ", grid.best_score_) # Use the best estimator to make predictions grid_predictions = grid.predict(X_test) # Evaluate the model with the best parameters print(confusion_matrix(y_test, grid_predictions)) print(classification_report(y_test, grid_predictions))
Di vê nimûneyê de, me bi karanîna kernelê RBF li ser tevnek nirxan ji bo `C` û `gama` geriya. Mînaka `GridSearchCV` modelê bi baştirîn parametreyên ku di dema lêgerînê de hatine dîtin ji nû ve vedihewîne.
Dîtbarkirina Sînorê Biryarê
Ji bo têgihiştinek çêtir ka ka dabeşkerê SVM çawa dixebite, pir caran bikêr e ku meriv sînorê biryarê xuyang bike. Ev di cîhek taybetmendiyek du-alî de hêsantir e. Li jêr mînakek bi karanîna daneya sentetîk heye:
python from sklearn.datasets import make_blobs # Generate a synthetic dataset X, y = make_blobs(n_samples=100, centers=2, random_state=6) # Fit the SVM model svc = SVC(kernel='linear', C=1.0) svc.fit(X, y) # Create a mesh to plot the decision boundary h = .02 x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1 y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1 xx, yy = np.meshgrid(np.arange(x_min, x_max, h), np.arange(y_min, y_max, h)) # Predict the class for each point in the mesh Z = svc.predict(np.c_[xx.ravel(), yy.ravel()]) Z = Z.reshape(xx.shape) # Plot the decision boundary plt.contourf(xx, yy, Z, alpha=0.8) plt.scatter(X[:, 0], X[:, 1], c=y, edgecolors='k', marker='o') plt.xlabel('Feature 1') plt.ylabel('Feature 2') plt.title('SVM Decision Boundary') plt.show()
Koda jorîn bi du çînan danesek sentetîk çêdike, modelek SVM bi kernelek xêzkirî re têkildar dike, û sînorê biryarê xuya dike. Fonksiyona `contourf` ji bo xêzkirina sînorê biryarê tê bikar anîn, û nexşeya belavbûnê xalên daneyê nîşan dide.Scikit-learn ji bo pêkanîna dabeşkirina SVM di Python de navbeynek berfireh û bikarhêner-heval peyda dike. Fonksiyonên sereke yên wekî `svm.SVC`, `fit`, `pêşbînî`, û `score` ji bo çêkirin û nirxandina modelên SVM bingehîn in. Rêzkirina hîperparameterê bi `GridSearchCV` bi dîtina pîvanên çêtirîn performansa modelê bêtir zêde dike. Dîmendarkirina sînorê biryarê dikare di derheqê behreya dabeşker de nihêrînên hêja peyda bike. Bi şopandina van gavan, meriv dikare bi karanîna scikit-learn dabeşkirina SVM-ê bi bandor bicîh bike û xweşbîn bike.
Pirs û bersivên din ên vê dawiyê di derbarê Eytc/AI/MLP Fêrbûna Makîneyê bi Python:
- Parametreya b di regresîyona xêzikî de (Y-navbera rêza herî baş) çawa tê hesibandin?
- Vektorên piştgirî di diyarkirina sînorê biryarê ya SVM de çi rola dilîze, û ew di pêvajoya perwerdehiyê de çawa têne nas kirin?
- Di çarçoveya xweşbîniya SVM de, girîngiya vektora giraniya `w` û bias `b` çi ye, û ew çawa têne destnîşankirin?
- Armanca rêbaza `visualize` di pêkanîna SVM de çi ye, û ew çawa di têgihîştina performansa modelê de dibe alîkar?
- Di pêkanîna SVM de rêbaza `pêşbînîkirin` çawa dabeşkirina xalek daneya nû diyar dike?
- Armanca bingehîn a Makîneyek Vektora Piştgiriyê (SVM) di çarçoveya fêrbûna makîneyê de çi ye?
- Girîngiya astengiyê (y_i (mathbf{x}_i cdot mathbf{w} + b) geq 1) di xweşbîniya SVM de rave bike.
- Armanca pirsgirêka xweşbîniya SVM çi ye û ew bi matematîkî çawa tête formule kirin?
- Tesnîfkirina komek taybetmendiyek di SVM de çawa bi nîşana fonksiyona biryarê ve girêdayî ye (nivîs{nîşan}(mathbf{x}_i cdot mathbf{w} + b))?
- Rola hevkêşeya hîperplane (mathbf{x} cdot mathbf{w} + b = 0) di çarçoveya Makîneyên Vektora Piştgiriyê (SVM) de çi ye?
Pir pirs û bersivan di Fêrbûna Makîneya EITC/AI/MLP de bi Python re bibînin