cuốn sách gpt4 ai đã làm

Đang khởi tạo GMM bằng sklearn python

In lại Tác giả: Vũ trụ không gian Thời gian cập nhật: 2023-11-03 11:43:23 28 4
mua khóa gpt4 Nike

Tôi muốn tạo một đối tượng sklearn GMM với một tập hợp các phương tiện, trọng số và hiệp phương sai được xác định trước (trên một lưới).

Tôi đã làm được điều này:

từ sklearn.mixture nhập GaussianMixture
nhập numpy dưới dạng np


def get_grid_gmm(subdivisions=[10,10,10], phương sai=0,05):
n_gaussians = less(lambda x, y: x*y,các phân khu)
bước = [ 1.0/(2*subdivisions[0]), 1.0/(2*subdivisions[1]), 1.0/(2*subdivisions[2])]

có nghĩa là = np.mgrid[ step[0] : 1.0-step[0]: complex(0,subdivisions[0]),
bước [1] : 1.0-bước [1]: phức tạp (0, phân khu [1]),
bước [2] : 1.0-bước [2]: phức tạp (0, phân khu [2])]
có nghĩa là = np.reshape(có nghĩa là, [-1,3])
hiệp phương sai = phương sai*np.ones_like(có nghĩa)
trọng số = (1.0/n_gaussians)*np.ones(n_gaussians)
gmm = GaussianMixture(n_comComponents=n_gaussians, covariance_type='spherical' )
gmm.weights_ = trọng lượng
gmm.covariances_ = hiệp phương sai
gmm.means_ = nghĩa là
trả lại gmm

chắc chắn chính():
xx = np.random.rand(100,3)
gmm = get_grid_gmm()
y= gmm.predict_proba(xx)

if __name__ == "__main__":
chủ yếu()

Vấn đề là nó thiếu thứ tôi cần dùng sau này gmm.predict_proba() phương pháp. Làm thế nào tôi có thể khắc phục vấn đề này?

gia hạn: Tôi đã cập nhật mã để hiển thị ví dụ đầy đủ về lỗi

更新 2

Tôi đã cập nhật mã dựa trên nhận xét và câu trả lời

từ sklearn.mixture nhập GaussianMixture
nhập numpy dưới dạng np


def get_grid_gmm(subdivisions=[10,10,10], phương sai=0,05):
n_gaussians = less(lambda x, y: x*y,các phân khu)
bước = [ 1.0/(2*subdivisions[0]), 1.0/(2*subdivisions[1]), 1.0/(2*subdivisions[2])]

có nghĩa là = np.mgrid[ step[0] : 1.0-step[0]: complex(0,subdivisions[0]),
bước [1] : 1.0-bước [1]: phức tạp (0, phân khu [1]),
bước [2] : 1.0-bước [2]: phức tạp (0, phân khu [2])]
có nghĩa là = np.reshape(có nghĩa,[3,-1])
hiệp phương sai = phương sai*np.ones(n_gaussians)
cov_type = 'hình cầu'
trọng số = (1.0/n_gaussians)*np.ones(n_gaussians)
gmm = GaussianMixture(n_comComponents=n_gaussians, covariance_type=cov_type )
gmm.weights_ = trọng lượng
gmm.covariances_ = hiệp phương sai
gmm.means_ = nghĩa là
từ sklearn.mixture.gaussian_mixture nhập _compute_precision_cholesky
gmm.precisions_cholesky_ = _compute_precision_cholesky(hiệp phương sai, cov_type)
gmm.precisions_ = gmm.precisions_cholesky_ ** 2
trả lại gmm

chắc chắn chính():
xx = np.random.rand(100,3)
gmm = get_grid_gmm()
_, y = gmm._estimate_log_prob(xx)
y = np.exp(y)

if __name__ == "__main__":
chủ yếu()

Không còn lỗi nữa, nhưng _estimate_log_prob và Predict_proba không tạo ra cùng một kết quả để khớp GMM. Tại sao điều này lại xảy ra?

câu trả lời hay nhất

Vì bạn không đào tạo mô hình mà chỉ sử dụng hàm để ước tính nên bạn không cần sử dụng đối tượng đó nhưng bạn có thể sử dụng hàm tương tự mà họ sử dụng một cách cơ bản. bạn có thể thử _estimate_log_gaussian_prob. Tôi nghĩ đó là những gì họ đang làm trong nội bộ.

Xem mã nguồn:

Đặc biệt là ở lớp cơ sở https://github.com/scikit-learn/scikit-learn/blob/ab93d657eb4268ac20c4db01c48065b5a1bfe80d/sklearn/mixture/base.py#L342

Gọi một phương thức cụ thể, gọi một hàm https://github.com/scikit-learn/scikit-learn/blob/ab93d657eb4268ac20c4db01c48065b5a1bfe80d/sklearn/mixture/gaussian_mixture.py#L671

Về python - Đang khởi tạo GMM bằng sklearn python, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/44913009/

28 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress