Py) ML - Scikit-Learn k-NN 에러

Py) ML - Scikit-Learn k-NN 에러

sklearn 라이브러리의 k-NN 클래스 사용시 발생하는 특수한 에러 해결 방법을 다룬다.


문제 상황

sklearn 라이브러리의 KNeighborsClassifier() 를 사용하여 만든 모델 객체를 기반으로 예측값 산출을 위해 다음의 코드와 같이 KNeighborsClassifier() 클래스로 생성한 k-NN 객체의 .predict() 메서드를 사용할 때 에러가 발생하였다.

1
2
3
4
model_knn = KNeighborsClassifier(n_neighbors = 5)
model_knn.fit(X = df_train.drop(columns = ["target", "Xgrp"]),
y = df_train["target"])
pred = model_knn.predict(df_test.drop(columns = ["target", "Xgrp"]))

.predict() 메서드를 사용하는 경우 다음과 같은 “Attribute” 에러가 발생하며 코드 실행이 되지 않는다.

AttributeError: Flags object has no attribute ‘c_contiguous’ when using KNeighborsClassifier predict

AttributeError: Flags object has no attribute ‘c_contiguous’

해결 방법

해당 에러는 sklearn 1.3.0 버전 때문에 발생한 문제로 다른 버전으로 재설치를 하면 해결이 될 수 있다. 대표적인 해결 방법은 버전을 1.2.2로 다운그레이드 하는 것이며 주피터노트북 환경에서 다음의 코드를 실행하면 된다.

!pip uninstall scikit-learn
!pip install scikit-learn==1.2.2

참고

본 내용은 다음의 게시글을 참고하였다. (2023-08-24 기준)
https://github.com/scikit-learn/scikit-learn/issues/26768

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×