首页 > 解决方案 > 如何修改代码以查找测试数据集错误

问题描述

大家好,我有以下代码,我正在尝试查找测试集错误。我已经尝试了几种使用 score 函数的方法。但是,它一直给我否定的答案并且大于 1。我如何修改代码来计算它?

import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import multivariate_normal as mvn
from sklearn.neighbors import KernelDensity as KD
from matplotlib.colors import ListedColormap
from sklearn.model_selection import train_test_split


# Fix random state for reproducibility
np.random.seed(1978081)

mm0 = np.array([2,2])
mm1= np.array([4,4])
Sig0 = 4*np.identity(2)
Sig1 = 4*np.identity(2)

N = 50 # number of points in each class
X0 = mvn.rvs(mm0,Sig0,N)
x0,y0 = np.split(X0,2,1)
X1 = mvn.rvs(mm1,Sig1,N)
x1,y1 = np.split(X1,2,1)
X = np.concatenate((X0,X1),axis=0)
y = np.concatenate((np.zeros(N),np.ones(N)))


# Generate Test data
M = 10
M0 = mvn.rvs(mm0, Sig0, M)
mx0, my0 = np.split(M0, 2, 1)
M1 = mvn.rvs(mm1, Sig1, M)
mx1, my1 = np.split(M1, 2, 1)
MX = np.concatenate((M0, M1), axis=0)
My = np.concatenate((np.zeros(M), np.ones(M)))


cmap_light = ListedColormap(['#ffe0c0','#b7faff'])
                             
h = .01  # mesh step size
x_min,x_max = (-3,9)
y_min,y_max = (-3,9)
for b in [1]: #, 3, 5, 7, 9, 11]:
    clf0 = KD(b)
    clf0.fit(X0)
    clf1 = KD(b)
    clf1.fit(X1)
    P0 = clf0.sample(M)
    P1 = clf1.sample(M)
    Error0=clf0.score_samples(P0)
    Error1 = clf1.score_samples(P1)


    Error = abs(Error0 + Error1) / 2 / M
    print(Error0)
    print(Error1)
    print(Error)
  

标签: pythontraining-datakernel-density

解决方案


推荐阅读