Raster sang vector trăn

Để bắt đầu sử dụng mã Python trong QGIS, chúng tôi sử dụng Bảng điều khiển Python. Nhấp vào Bảng điều khiển Python trong menu Plugins as hinh

Raster sang vector trăn

Bảng điều khiển Python sẽ được neo ở bên dưới cùng của cửa sổ QGIS như hình sau

Raster sang vector trăn
Cửa sổ Qgis với Bảng điều khiển Python

Trong Bảng điều khiển Python, bạn có thể gõ cú pháp Python. ví dụ để kiểm tra phiên bản Python chúng ta có thể sử dụng đoạn mã sau

import sys
print (sys.version) 

Nhập các mã trên trong Bảng điều khiển Python và nhấn Enter, bạn sẽ nhận được phiên bản Python và một số thông tin tương tự như hình sau

Raster sang vector trăn
Bảng điều khiển Python

Trong Bảng điều khiển, chúng ta chỉ cần nhập một dòng cú pháp hoặc mã và sau đó thực hiện nó. Mặc dù chúng ta có thể thực hiện một chức năng hoặc một quy trình lặp lại trong đó, nhưng sẽ rất khó để xử lý. Đó là lý do tại sao chúng tôi sử dụng Console chỉ với mục đích rút ngắn, giả định như để lấy một biến, đối tượng, danh sách,… Để mã hóa phức tạp hoặc dài, chúng tôi đang sử dụng trình soạn thảo. Để truy cập trình soạn thảo, chỉ cần nhấp vào biểu tượng giấy bằng cách sử dụng các biểu tượng như trong hình sau

Raster sang vector trăn
Trình chỉnh sửa Python

Trong hình trên có thể thấy một trình soạn thảo trống. Trong quá trình chỉnh sửa này, chúng tôi có thể viết mã và có thể được lưu cho mục đích tiếp theo

Trong phần này, chúng tôi giới thiệu từ vựng học máy mà chúng tôi sử dụng trong suốt quá trình học scikit và đưa ra một ví dụ học tập đơn giản

học máy. thiết lập vấn đề

Nói chung, một vấn đề học tập xem xét một tập hợp n mẫu dữ liệu và sau đó cố gắng dự đoán các thuộc tính của dữ liệu chưa biết. Nếu mỗi mẫu có nhiều hơn một số và, ví dụ, một mục nhập đa chiều (còn gọi là dữ liệu đa biến), nó được cho là có một số thuộc tính hoặc tính năng

Các vấn đề học tập rơi vào một vài loại

  • học có giám sát, trong đó dữ liệu đi kèm với các thuộc tính bổ sung mà chúng tôi muốn dự đoán ( để truy cập trang học có giám sát scikit-learning). Vấn đề này có thể là một trong hai

    • phân loại. các mẫu thuộc về hai hoặc nhiều lớp và chúng tôi muốn tìm hiểu từ dữ liệu đã được gắn nhãn cách dự đoán lớp dữ liệu chưa được gắn nhãn. Một ví dụ về vấn đề phân loại sẽ là nhận dạng chữ số viết tay, trong đó mục đích là gán mỗi vectơ đầu vào cho một trong số hữu hạn các danh mục riêng biệt. Một cách khác để nghĩ về phân loại là một hình thức học tập có giám sát rời rạc (trái ngược với liên tục), trong đó người ta có một số loại hạn chế và đối với mỗi mẫu trong số n mẫu được cung cấp, người ta cố gắng gắn nhãn cho chúng bằng loại hoặc loại chính xác.

    • hồi quy. nếu đầu ra mong muốn bao gồm một hoặc nhiều biến liên tục, thì nhiệm vụ được gọi là hồi quy. Một ví dụ về bài toán hồi quy là dự đoán chiều dài của một con cá hồi là một hàm của tuổi và trọng lượng của nó

  • học không giám sát, trong đó dữ liệu huấn luyện bao gồm một tập hợp các vectơ đầu vào x mà không có bất kỳ giá trị đích tương ứng nào. Mục tiêu trong các bài toán như vậy có thể là khám phá các nhóm ví dụ tương tự trong dữ liệu, nơi nó được gọi là phân cụm hoặc để xác định phân phối dữ liệu trong không gian đầu vào, được gọi là ước tính mật độ hoặc để chiếu dữ liệu từ một chiều cao.

Tập huấn luyện và tập kiểm tra

Học máy là học một số thuộc tính của một tập dữ liệu và sau đó kiểm tra các thuộc tính đó với một tập dữ liệu khác. Một thực tế phổ biến trong học máy là đánh giá một thuật toán bằng cách chia một tập dữ liệu thành hai. Chúng tôi gọi một trong những tập hợp đó là tập huấn luyện, trên đó chúng tôi tìm hiểu một số thuộc tính;

Đang tải tập dữ liệu mẫu

>>> print(digits.data)
[[ 0.   0.   5. ..   0.   0.   0.]
 [ 0.   0.   0. ..  10.   0.   0.]
 [ 0.   0.   0. ..  16.   9.   0.]
 ...
 [ 0.   0.   1. ..   6.   0.   0.]
 [ 0.   0.   2. ..  12.   0.   0.]
 [ 0.   0.  10. ..  12.   1.   0.]]
3 đi kèm với một vài bộ dữ liệu tiêu chuẩn, chẳng hạn như bộ dữ liệu mống mắt và chữ số để phân loại và bộ dữ liệu bệnh tiểu đường để hồi quy

Trong phần sau, chúng tôi bắt đầu trình thông dịch Python từ trình bao của chúng tôi và sau đó tải bộ dữ liệu

>>> print(digits.data)
[[ 0.   0.   5. ..   0.   0.   0.]
 [ 0.   0.   0. ..  10.   0.   0.]
 [ 0.   0.   0. ..  16.   9.   0.]
 ...
 [ 0.   0.   1. ..   6.   0.   0.]
 [ 0.   0.   2. ..  12.   0.   0.]
 [ 0.   0.  10. ..  12.   1.   0.]]
4 và
>>> print(digits.data)
[[ 0.   0.   5. ..   0.   0.   0.]
 [ 0.   0.   0. ..  10.   0.   0.]
 [ 0.   0.   0. ..  16.   9.   0.]
 ...
 [ 0.   0.   1. ..   6.   0.   0.]
 [ 0.   0.   2. ..  12.   0.   0.]
 [ 0.   0.  10. ..  12.   1.   0.]]
5. Quy ước công chứng của chúng tôi là
>>> print(digits.data)
[[ 0.   0.   5. ..   0.   0.   0.]
 [ 0.   0.   0. ..  10.   0.   0.]
 [ 0.   0.   0. ..  16.   9.   0.]
 ...
 [ 0.   0.   1. ..   6.   0.   0.]
 [ 0.   0.   2. ..  12.   0.   0.]
 [ 0.   0.  10. ..  12.   1.   0.]]
6 biểu thị dấu nhắc hệ vỏ trong khi
>>> print(digits.data)
[[ 0.   0.   5. ..   0.   0.   0.]
 [ 0.   0.   0. ..  10.   0.   0.]
 [ 0.   0.   0. ..  16.   9.   0.]
 ...
 [ 0.   0.   1. ..   6.   0.   0.]
 [ 0.   0.   2. ..  12.   0.   0.]
 [ 0.   0.  10. ..  12.   1.   0.]]
7 biểu thị dấu nhắc trình thông dịch Python

$ python
>>> from sklearn import datasets
>>> iris = datasets.load_iris()
>>> digits = datasets.load_digits()

Tập dữ liệu là một đối tượng giống như từ điển chứa tất cả dữ liệu và một số siêu dữ liệu về dữ liệu. Dữ liệu này được lưu trữ trong thành viên

>>> print(digits.data)
[[ 0.   0.   5. ..   0.   0.   0.]
 [ 0.   0.   0. ..  10.   0.   0.]
 [ 0.   0.   0. ..  16.   9.   0.]
 ...
 [ 0.   0.   1. ..   6.   0.   0.]
 [ 0.   0.   2. ..  12.   0.   0.]
 [ 0.   0.  10. ..  12.   1.   0.]]
8, là một mảng
>>> print(digits.data)
[[ 0.   0.   5. ..   0.   0.   0.]
 [ 0.   0.   0. ..  10.   0.   0.]
 [ 0.   0.   0. ..  16.   9.   0.]
 ...
 [ 0.   0.   1. ..   6.   0.   0.]
 [ 0.   0.   2. ..  12.   0.   0.]
 [ 0.   0.  10. ..  12.   1.   0.]]
9. Trong trường hợp các vấn đề được giám sát, một hoặc nhiều biến phản hồi được lưu trữ trong thành viên
>>> digits.target
array([0, 1, 2, ..., 8, 9, 8])
0. Thông tin chi tiết về các bộ dữ liệu khác nhau có thể được tìm thấy trong

Chẳng hạn, trong trường hợp tập dữ liệu chữ số,

>>> digits.target
array([0, 1, 2, ..., 8, 9, 8])
1 cấp quyền truy cập vào các tính năng có thể được sử dụng để phân loại các mẫu chữ số

>>> print(digits.data)
[[ 0.   0.   5. ..   0.   0.   0.]
 [ 0.   0.   0. ..  10.   0.   0.]
 [ 0.   0.   0. ..  16.   9.   0.]
 ...
 [ 0.   0.   1. ..   6.   0.   0.]
 [ 0.   0.   2. ..  12.   0.   0.]
 [ 0.   0.  10. ..  12.   1.   0.]]

>>> digits.target
array([0, 1, 2, ..., 8, 9, 8])
2 đưa ra sự thật cơ bản cho tập dữ liệu chữ số, đó là số tương ứng với mỗi hình ảnh chữ số mà chúng tôi đang cố gắng tìm hiểu

>>> digits.target
array([0, 1, 2, ..., 8, 9, 8])

Hình dạng của mảng dữ liệu

Dữ liệu luôn là mảng 2D, hình dạng

>>> digits.target
array([0, 1, 2, ..., 8, 9, 8])
3, mặc dù dữ liệu gốc có thể có hình dạng khác. Trong trường hợp các chữ số, mỗi mẫu ban đầu là một hình ảnh có hình dạng
>>> digits.target
array([0, 1, 2, ..., 8, 9, 8])
4 và có thể được truy cập bằng cách sử dụng

>>> digits.images[0]
array([[  0.,   0.,   5.,  13.,   9.,   1.,   0.,   0.],
       [  0.,   0.,  13.,  15.,  10.,  15.,   5.,   0.],
       [  0.,   3.,  15.,   2.,   0.,  11.,   8.,   0.],
       [  0.,   4.,  12.,   0.,   0.,   8.,   8.,   0.],
       [  0.,   5.,   8.,   0.,   0.,   9.,   8.,   0.],
       [  0.,   4.,  11.,   0.,   1.,  12.,   7.,   0.],
       [  0.,   2.,  14.,   5.,  10.,  12.,   0.,   0.],
       [  0.,   0.,   6.,  13.,  10.,   0.,   0.,   0.]])

Minh họa cách bắt đầu từ vấn đề ban đầu, người ta có thể định hình dữ liệu để sử dụng trong scikit-learning

Đang tải từ bộ dữ liệu bên ngoài

Để tải từ tập dữ liệu bên ngoài, vui lòng tham khảo

Học tập và dự đoán

Trong trường hợp tập dữ liệu chữ số, nhiệm vụ là dự đoán, cho trước một hình ảnh, nó đại diện cho chữ số nào. Chúng tôi được cung cấp các mẫu của mỗi trong số 10 lớp có thể (các chữ số từ 0 đến 9) trên đó chúng tôi phù hợp với một công cụ ước tính để có thể dự đoán các lớp mà các mẫu không nhìn thấy thuộc về

Trong scikit-learning, một công cụ ước tính để phân loại là một đối tượng Python thực hiện các phương thức

>>> digits.target
array([0, 1, 2, ..., 8, 9, 8])
5 và
>>> digits.target
array([0, 1, 2, ..., 8, 9, 8])
6

Một ví dụ về công cụ ước tính là lớp

>>> digits.target
array([0, 1, 2, ..., 8, 9, 8])
7, thực hiện phân loại vectơ hỗ trợ. Hàm tạo của công cụ ước tính lấy các tham số của mô hình làm đối số

Bây giờ, chúng tôi sẽ coi công cụ ước tính là một hộp đen

>>> from sklearn import svm
>>> clf = svm.SVC(gamma=0.001, C=100.)

Lựa chọn các thông số của mô hình

Trong ví dụ này, chúng tôi đặt giá trị của

>>> digits.target
array([0, 1, 2, ..., 8, 9, 8])
8 theo cách thủ công. Để tìm giá trị tốt cho các tham số này, chúng ta có thể sử dụng các công cụ như và

Phiên bản ước tính

>>> digits.target
array([0, 1, 2, ..., 8, 9, 8])
9 (đối với bộ phân loại) lần đầu tiên được trang bị cho mô hình; . Điều này được thực hiện bằng cách chuyển tập huấn luyện của chúng ta sang phương thức
>>> digits.images[0]
array([[  0.,   0.,   5.,  13.,   9.,   1.,   0.,   0.],
       [  0.,   0.,  13.,  15.,  10.,  15.,   5.,   0.],
       [  0.,   3.,  15.,   2.,   0.,  11.,   8.,   0.],
       [  0.,   4.,  12.,   0.,   0.,   8.,   8.,   0.],
       [  0.,   5.,   8.,   0.,   0.,   9.,   8.,   0.],
       [  0.,   4.,  11.,   0.,   1.,  12.,   7.,   0.],
       [  0.,   2.,  14.,   5.,  10.,  12.,   0.,   0.],
       [  0.,   0.,   6.,  13.,  10.,   0.,   0.,   0.]])
0. Đối với tập huấn luyện, chúng tôi sẽ sử dụng tất cả các hình ảnh từ tập dữ liệu của mình, ngoại trừ hình ảnh cuối cùng mà chúng tôi sẽ dự đoán. Chúng tôi chọn tập huấn luyện với cú pháp Python
>>> digits.images[0]
array([[  0.,   0.,   5.,  13.,   9.,   1.,   0.,   0.],
       [  0.,   0.,  13.,  15.,  10.,  15.,   5.,   0.],
       [  0.,   3.,  15.,   2.,   0.,  11.,   8.,   0.],
       [  0.,   4.,  12.,   0.,   0.,   8.,   8.,   0.],
       [  0.,   5.,   8.,   0.,   0.,   9.,   8.,   0.],
       [  0.,   4.,  11.,   0.,   1.,  12.,   7.,   0.],
       [  0.,   2.,  14.,   5.,  10.,  12.,   0.,   0.],
       [  0.,   0.,   6.,  13.,  10.,   0.,   0.,   0.]])
1, cú pháp này tạo ra một mảng mới chứa tất cả trừ mục cuối cùng từ
>>> digits.target
array([0, 1, 2, ..., 8, 9, 8])
1

>>> clf.fit(digits.data[:-1], digits.target[:-1])
SVC(C=100.0, gamma=0.001)

Bây giờ bạn có thể dự đoán các giá trị mới. Trong trường hợp này, bạn sẽ dự đoán bằng cách sử dụng hình ảnh cuối cùng từ

>>> digits.target
array([0, 1, 2, ..., 8, 9, 8])
1. Bằng cách dự đoán, bạn sẽ xác định hình ảnh từ tập huấn luyện phù hợp nhất với hình ảnh cuối cùng

>>> clf.predict(digits.data[-1:])
array([8])

Hình ảnh tương ứng là

Raster sang vector trăn

Như bạn có thể thấy, đó là một nhiệm vụ đầy thách thức. Rốt cuộc, hình ảnh có độ phân giải kém. Bạn có đồng ý với bộ phân loại không?

Một ví dụ đầy đủ về vấn đề phân loại này có sẵn như là một ví dụ mà bạn có thể chạy và nghiên cứu.

quy ước

các công cụ ước tính scikit-learning tuân theo các quy tắc nhất định để làm cho hành vi của họ dễ đoán hơn. Chúng được mô tả chi tiết hơn trong

loại đúc

Nếu có thể, đầu vào loại

>>> digits.images[0]
array([[  0.,   0.,   5.,  13.,   9.,   1.,   0.,   0.],
       [  0.,   0.,  13.,  15.,  10.,  15.,   5.,   0.],
       [  0.,   3.,  15.,   2.,   0.,  11.,   8.,   0.],
       [  0.,   4.,  12.,   0.,   0.,   8.,   8.,   0.],
       [  0.,   5.,   8.,   0.,   0.,   9.,   8.,   0.],
       [  0.,   4.,  11.,   0.,   1.,  12.,   7.,   0.],
       [  0.,   2.,  14.,   5.,  10.,  12.,   0.,   0.],
       [  0.,   0.,   6.,  13.,  10.,   0.,   0.,   0.]])
4 sẽ duy trì loại dữ liệu của nó. Nếu không, đầu vào sẽ được chuyển thành
>>> digits.images[0]
array([[  0.,   0.,   5.,  13.,   9.,   1.,   0.,   0.],
       [  0.,   0.,  13.,  15.,  10.,  15.,   5.,   0.],
       [  0.,   3.,  15.,   2.,   0.,  11.,   8.,   0.],
       [  0.,   4.,  12.,   0.,   0.,   8.,   8.,   0.],
       [  0.,   5.,   8.,   0.,   0.,   9.,   8.,   0.],
       [  0.,   4.,  11.,   0.,   1.,  12.,   7.,   0.],
       [  0.,   2.,  14.,   5.,  10.,  12.,   0.,   0.],
       [  0.,   0.,   6.,  13.,  10.,   0.,   0.,   0.]])
5

>>> import numpy as np
>>> from sklearn import kernel_approximation

>>> rng = np.random.RandomState(0)
>>> X = rng.rand(10, 2000)
>>> X = np.array(X, dtype='float32')
>>> X.dtype
dtype('float32')

>>> transformer = kernel_approximation.RBFSampler()
>>> X_new = transformer.fit_transform(X)
>>> X_new.dtype
dtype('float32')

Trong ví dụ này,

>>> digits.images[0]
array([[  0.,   0.,   5.,  13.,   9.,   1.,   0.,   0.],
       [  0.,   0.,  13.,  15.,  10.,  15.,   5.,   0.],
       [  0.,   3.,  15.,   2.,   0.,  11.,   8.,   0.],
       [  0.,   4.,  12.,   0.,   0.,   8.,   8.,   0.],
       [  0.,   5.,   8.,   0.,   0.,   9.,   8.,   0.],
       [  0.,   4.,  11.,   0.,   1.,  12.,   7.,   0.],
       [  0.,   2.,  14.,   5.,  10.,  12.,   0.,   0.],
       [  0.,   0.,   6.,  13.,  10.,   0.,   0.,   0.]])
6 là
>>> digits.images[0]
array([[  0.,   0.,   5.,  13.,   9.,   1.,   0.,   0.],
       [  0.,   0.,  13.,  15.,  10.,  15.,   5.,   0.],
       [  0.,   3.,  15.,   2.,   0.,  11.,   8.,   0.],
       [  0.,   4.,  12.,   0.,   0.,   8.,   8.,   0.],
       [  0.,   5.,   8.,   0.,   0.,   9.,   8.,   0.],
       [  0.,   4.,  11.,   0.,   1.,  12.,   7.,   0.],
       [  0.,   2.,  14.,   5.,  10.,  12.,   0.,   0.],
       [  0.,   0.,   6.,  13.,  10.,   0.,   0.,   0.]])
4 và không thay đổi bởi
>>> digits.images[0]
array([[  0.,   0.,   5.,  13.,   9.,   1.,   0.,   0.],
       [  0.,   0.,  13.,  15.,  10.,  15.,   5.,   0.],
       [  0.,   3.,  15.,   2.,   0.,  11.,   8.,   0.],
       [  0.,   4.,  12.,   0.,   0.,   8.,   8.,   0.],
       [  0.,   5.,   8.,   0.,   0.,   9.,   8.,   0.],
       [  0.,   4.,  11.,   0.,   1.,  12.,   7.,   0.],
       [  0.,   2.,  14.,   5.,  10.,  12.,   0.,   0.],
       [  0.,   0.,   6.,  13.,  10.,   0.,   0.,   0.]])
8

Sử dụng dữ liệu đào tạo (hoặc thử nghiệm) được đánh máy theo kiểu

>>> digits.images[0]
array([[  0.,   0.,   5.,  13.,   9.,   1.,   0.,   0.],
       [  0.,   0.,  13.,  15.,  10.,  15.,   5.,   0.],
       [  0.,   3.,  15.,   2.,   0.,  11.,   8.,   0.],
       [  0.,   4.,  12.,   0.,   0.,   8.,   8.,   0.],
       [  0.,   5.,   8.,   0.,   0.,   9.,   8.,   0.],
       [  0.,   4.,  11.,   0.,   1.,  12.,   7.,   0.],
       [  0.,   2.,  14.,   5.,  10.,  12.,   0.,   0.],
       [  0.,   0.,   6.,  13.,  10.,   0.,   0.,   0.]])
4 thường hiệu quả hơn so với sử dụng thông thường
>>> digits.images[0]
array([[  0.,   0.,   5.,  13.,   9.,   1.,   0.,   0.],
       [  0.,   0.,  13.,  15.,  10.,  15.,   5.,   0.],
       [  0.,   3.,  15.,   2.,   0.,  11.,   8.,   0.],
       [  0.,   4.,  12.,   0.,   0.,   8.,   8.,   0.],
       [  0.,   5.,   8.,   0.,   0.,   9.,   8.,   0.],
       [  0.,   4.,  11.,   0.,   1.,  12.,   7.,   0.],
       [  0.,   2.,  14.,   5.,  10.,  12.,   0.,   0.],
       [  0.,   0.,   6.,  13.,  10.,   0.,   0.,   0.]])
5
>>> from sklearn import svm
>>> clf = svm.SVC(gamma=0.001, C=100.)
1. nó cho phép giảm mức sử dụng bộ nhớ và đôi khi cũng giảm thời gian xử lý bằng cách tận dụng các hướng dẫn vectơ của CPU. Tuy nhiên, đôi khi nó có thể dẫn đến các vấn đề về độ ổn định số khiến thuật toán nhạy cảm hơn với tỷ lệ của các giá trị và

Tuy nhiên, hãy nhớ rằng không phải tất cả các công cụ ước tính scikit-learning đều cố gắng hoạt động ở chế độ

>>> digits.images[0]
array([[  0.,   0.,   5.,  13.,   9.,   1.,   0.,   0.],
       [  0.,   0.,  13.,  15.,  10.,  15.,   5.,   0.],
       [  0.,   3.,  15.,   2.,   0.,  11.,   8.,   0.],
       [  0.,   4.,  12.,   0.,   0.,   8.,   8.,   0.],
       [  0.,   5.,   8.,   0.,   0.,   9.,   8.,   0.],
       [  0.,   4.,  11.,   0.,   1.,  12.,   7.,   0.],
       [  0.,   2.,  14.,   5.,  10.,  12.,   0.,   0.],
       [  0.,   0.,   6.,  13.,  10.,   0.,   0.,   0.]])
4. Chẳng hạn, một số máy biến áp sẽ luôn truyền đầu vào tới
>>> digits.images[0]
array([[  0.,   0.,   5.,  13.,   9.,   1.,   0.,   0.],
       [  0.,   0.,  13.,  15.,  10.,  15.,   5.,   0.],
       [  0.,   3.,  15.,   2.,   0.,  11.,   8.,   0.],
       [  0.,   4.,  12.,   0.,   0.,   8.,   8.,   0.],
       [  0.,   5.,   8.,   0.,   0.,   9.,   8.,   0.],
       [  0.,   4.,  11.,   0.,   1.,  12.,   7.,   0.],
       [  0.,   2.,  14.,   5.,  10.,  12.,   0.,   0.],
       [  0.,   0.,   6.,  13.,  10.,   0.,   0.,   0.]])
5 và kết quả là trả về các giá trị được biến đổi
>>> digits.images[0]
array([[  0.,   0.,   5.,  13.,   9.,   1.,   0.,   0.],
       [  0.,   0.,  13.,  15.,  10.,  15.,   5.,   0.],
       [  0.,   3.,  15.,   2.,   0.,  11.,   8.,   0.],
       [  0.,   4.,  12.,   0.,   0.,   8.,   8.,   0.],
       [  0.,   5.,   8.,   0.,   0.,   9.,   8.,   0.],
       [  0.,   4.,  11.,   0.,   1.,  12.,   7.,   0.],
       [  0.,   2.,  14.,   5.,  10.,  12.,   0.,   0.],
       [  0.,   0.,   6.,  13.,  10.,   0.,   0.,   0.]])
5

Các mục tiêu hồi quy được chuyển thành

>>> digits.images[0]
array([[  0.,   0.,   5.,  13.,   9.,   1.,   0.,   0.],
       [  0.,   0.,  13.,  15.,  10.,  15.,   5.,   0.],
       [  0.,   3.,  15.,   2.,   0.,  11.,   8.,   0.],
       [  0.,   4.,  12.,   0.,   0.,   8.,   8.,   0.],
       [  0.,   5.,   8.,   0.,   0.,   9.,   8.,   0.],
       [  0.,   4.,  11.,   0.,   1.,  12.,   7.,   0.],
       [  0.,   2.,  14.,   5.,  10.,  12.,   0.,   0.],
       [  0.,   0.,   6.,  13.,  10.,   0.,   0.,   0.]])
5 và các mục tiêu phân loại được duy trì

>>> from sklearn import datasets
>>> from sklearn.svm import SVC
>>> iris = datasets.load_iris()
>>> clf = SVC()
>>> clf.fit(iris.data, iris.target)
SVC()

>>> list(clf.predict(iris.data[:3]))
[0, 0, 0]

>>> clf.fit(iris.data, iris.target_names[iris.target])
SVC()

>>> list(clf.predict(iris.data[:3]))
['setosa', 'setosa', 'setosa']

Ở đây,

>>> from sklearn import svm
>>> clf = svm.SVC(gamma=0.001, C=100.)
6 đầu tiên trả về một mảng số nguyên, vì
>>> from sklearn import svm
>>> clf = svm.SVC(gamma=0.001, C=100.)
7 (một mảng số nguyên) đã được sử dụng trong
>>> digits.images[0]
array([[  0.,   0.,   5.,  13.,   9.,   1.,   0.,   0.],
       [  0.,   0.,  13.,  15.,  10.,  15.,   5.,   0.],
       [  0.,   3.,  15.,   2.,   0.,  11.,   8.,   0.],
       [  0.,   4.,  12.,   0.,   0.,   8.,   8.,   0.],
       [  0.,   5.,   8.,   0.,   0.,   9.,   8.,   0.],
       [  0.,   4.,  11.,   0.,   1.,  12.,   7.,   0.],
       [  0.,   2.,  14.,   5.,  10.,  12.,   0.,   0.],
       [  0.,   0.,   6.,  13.,  10.,   0.,   0.,   0.]])
0.
>>> from sklearn import svm
>>> clf = svm.SVC(gamma=0.001, C=100.)
6 thứ hai trả về một mảng chuỗi, vì
>>> clf.fit(digits.data[:-1], digits.target[:-1])
SVC(C=100.0, gamma=0.001)
0 là để khớp

Sửa chữa và cập nhật các thông số

Các siêu tham số của công cụ ước tính có thể được cập nhật sau khi nó được xây dựng thông qua phương thức. Gọi

>>> clf.fit(digits.data[:-1], digits.target[:-1])
SVC(C=100.0, gamma=0.001)
1 nhiều lần sẽ ghi đè lên những gì đã học được bởi bất kỳ
>>> clf.fit(digits.data[:-1], digits.target[:-1])
SVC(C=100.0, gamma=0.001)
1 nào trước đó

>>> import numpy as np
>>> from sklearn.datasets import load_iris
>>> from sklearn.svm import SVC
>>> X, y = load_iris(return_X_y=True)

>>> clf = SVC()
>>> clf.set_params(kernel='linear').fit(X, y)
SVC(kernel='linear')
>>> clf.predict(X[:5])
array([0, 0, 0, 0, 0])

>>> clf.set_params(kernel='rbf').fit(X, y)
SVC()
>>> clf.predict(X[:5])
array([0, 0, 0, 0, 0])

Ở đây, hạt nhân mặc định

>>> clf.fit(digits.data[:-1], digits.target[:-1])
SVC(C=100.0, gamma=0.001)
3 lần đầu tiên được thay đổi thành
>>> clf.fit(digits.data[:-1], digits.target[:-1])
SVC(C=100.0, gamma=0.001)
4 sau khi bộ ước tính đã được xây dựng và được thay đổi trở lại thành
>>> clf.fit(digits.data[:-1], digits.target[:-1])
SVC(C=100.0, gamma=0.001)
3 để điều chỉnh lại bộ ước tính và đưa ra dự đoán thứ hai

Đa lớp vs. lắp nhiều nhãn

Khi sử dụng, nhiệm vụ học tập và dự đoán được thực hiện phụ thuộc vào định dạng của dữ liệu đích phù hợp với

>>> print(digits.data)
[[ 0.   0.   5. ..   0.   0.   0.]
 [ 0.   0.   0. ..  10.   0.   0.]
 [ 0.   0.   0. ..  16.   9.   0.]
 ...
 [ 0.   0.   1. ..   6.   0.   0.]
 [ 0.   0.   2. ..  12.   0.   0.]
 [ 0.   0.  10. ..  12.   1.   0.]]
0

Trong trường hợp trên, bộ phân loại phù hợp với một mảng 1d của các nhãn đa lớp và do đó, phương thức

>>> from sklearn import svm
>>> clf = svm.SVC(gamma=0.001, C=100.)
6 cung cấp các dự đoán đa lớp tương ứng. Nó cũng có thể phù hợp với một mảng 2d của các chỉ báo nhãn nhị phân

>>> print(digits.data)
[[ 0.   0.   5. ..   0.   0.   0.]
 [ 0.   0.   0. ..  10.   0.   0.]
 [ 0.   0.   0. ..  16.   9.   0.]
 ...
 [ 0.   0.   1. ..   6.   0.   0.]
 [ 0.   0.   2. ..  12.   0.   0.]
 [ 0.   0.  10. ..  12.   1.   0.]]
1

Ở đây, bộ phân loại là

>>> clf.fit(digits.data[:-1], digits.target[:-1])
SVC(C=100.0, gamma=0.001)
1 trên biểu diễn nhãn nhị phân 2d của
>>> clf.predict(digits.data[-1:])
array([8])
0, sử dụng. Trong trường hợp này,
>>> from sklearn import svm
>>> clf = svm.SVC(gamma=0.001, C=100.)
6 trả về một mảng 2d biểu thị các dự đoán đa nhãn tương ứng

Lưu ý rằng phiên bản thứ tư và thứ năm trả về tất cả các số 0, cho biết rằng chúng không khớp với nhãn nào trong ba nhãn

>>> digits.images[0]
array([[  0.,   0.,   5.,  13.,   9.,   1.,   0.,   0.],
       [  0.,   0.,  13.,  15.,  10.,  15.,   5.,   0.],
       [  0.,   3.,  15.,   2.,   0.,  11.,   8.,   0.],
       [  0.,   4.,  12.,   0.,   0.,   8.,   8.,   0.],
       [  0.,   5.,   8.,   0.,   0.,   9.,   8.,   0.],
       [  0.,   4.,  11.,   0.,   1.,  12.,   7.,   0.],
       [  0.,   2.,  14.,   5.,  10.,  12.,   0.,   0.],
       [  0.,   0.,   6.,  13.,  10.,   0.,   0.,   0.]])
0 khi. Với đầu ra nhiều nhãn, tương tự như vậy, một phiên bản có thể được gán nhiều nhãn

>>> print(digits.data)
[[ 0.   0.   5. ..   0.   0.   0.]
 [ 0.   0.   0. ..  10.   0.   0.]
 [ 0.   0.   0. ..  16.   9.   0.]
 ...
 [ 0.   0.   1. ..   6.   0.   0.]
 [ 0.   0.   2. ..  12.   0.   0.]
 [ 0.   0.  10. ..  12.   1.   0.]]
2

Trong trường hợp này, trình phân loại phù hợp với các trường hợp từng được gán nhiều nhãn. Được sử dụng để nhị phân hóa mảng 2d của nhiều nhãn thành

>>> digits.images[0]
array([[  0.,   0.,   5.,  13.,   9.,   1.,   0.,   0.],
       [  0.,   0.,  13.,  15.,  10.,  15.,   5.,   0.],
       [  0.,   3.,  15.,   2.,   0.,  11.,   8.,   0.],
       [  0.,   4.,  12.,   0.,   0.,   8.,   8.,   0.],
       [  0.,   5.,   8.,   0.,   0.,   9.,   8.,   0.],
       [  0.,   4.,  11.,   0.,   1.,  12.,   7.,   0.],
       [  0.,   2.,  14.,   5.,  10.,  12.,   0.,   0.],
       [  0.,   0.,   6.,  13.,  10.,   0.,   0.,   0.]])
0 khi. Kết quả là,
>>> from sklearn import svm
>>> clf = svm.SVC(gamma=0.001, C=100.)
6 trả về một mảng 2d với nhiều nhãn được dự đoán cho mỗi phiên bản