2016-11-29 3 views
0

사용자 (사용자)를 사용하여 피쳐 벡터 형식 (사실 3D numpy 배열)에 제공되지 않은 k- 최근 인접 학습 데이터를 보내고 싶습니다. 기능을 통해 지정) 기능. 나는 sklearn에서 이것을한다. 두 가지 질문이 있습니다.사용자 지정 메트릭 및 배열이 아닌 데이터로 knn을 사용하는 sklearn

a. 커스텀 메트릭을 사용할 때 1D 배열 데이터를 고집하는 KNeighborsClassifier의 근거는 무엇입니까?
b. 입력 배열의 모양 (http://scikit-learn.org/dev/developers/contributing.html#rolling-your-own-estimator에서와 같이)을 검사하지 않는 사용자 지정 추정기를 굴림하면 중첩 된 교차 유효성 검사를 사용할 때 일부 비 호환성이 있습니다. 추정기의 .fit() 루틴을 제외하고는 X와 y의 모양이 확인됩니까?

코드를 제공하지 않습니다. 주요 관심사는 엄격한 입력 처리의이면에있는 디자인 원리가 무엇인지 이해하는 것입니다. 나는 모양 짓기 조작을하는 것이 자연스럽지 않다는 것을 안다. 문학 작품에 대해 감사드립니다.

+0

을 당신이 3D가 다음 각 샘플에 대한 3 특징 벡터를 ndarray있는 경우. 권리? – AlexG

+0

아니요, 각 기능 "벡터"는 3D 배열, 즉 세 개의 인덱스로 인덱싱됩니다. – user22428

답변

0

각 샘플을 np.array([feature1, feature2, feature3, ...]) 형태의 1D 배열로 입력하는 것이 표준입니다. 귀하의 교육 및 테스트 데이터는 X 다음과 같아야합니다

np.array([[sample1_feature1, sample1_feature2, ...], [sample2_feature1, sample2_feature2, ...], ...])

+0

설명 해 주셔서 감사합니다. 입력 형식을 알아 냈습니다. 나는이 데이터 포맷을 가지고 있지 않은 작동 평가 기가있을 수 있는지 (그리고 충돌 할 수있는 곳인지) 스스로에게 묻고 있었다. 이 특정 데이터 형식이 필요하지 않은 이유는 파이썬 함수로 전달되는 메트릭의 경우 기능 벡터에서 작동하는 최적화 된 C 코드가 없으므로 형식 검사를 수행 할 이유가 없기 때문입니다. 아니면 내가 틀렸어? – user22428

+0

귀하의 질문에 대한 답변을 아직 모릅니다. 그러나 내 관점에서 볼 때 모델은 행렬 내에 배치되는 방식에 관계없이 모델 간의 상관 관계를 학습 할 수 있기 때문에 병합 된 데이터를 피드하는 것이 좋습니다. 또한, 여러분이 말하는 것처럼 1D 배열과 같은 모양이 아닌 샘플을 다루려면 더 많은 계산 작업이 필요합니다. – AlexG

관련 문제