Scikit Learn - RadiusNeighborsClassifier

O Raio no nome deste classificador representa os vizinhos mais próximos dentro de um raio especificado r, onde r é um valor de ponto flutuante especificado pelo usuário. Portanto, como o nome sugere, esse classificador implementa o aprendizado com base no número de vizinhos dentro de um raio fixo r de cada ponto de treinamento. Vamos entender melhor com a ajuda de um exemplo de implementação -

Exemplo de Implementação

Neste exemplo, iremos implementar KNN no conjunto de dados denominado Conjunto de dados Iris Flower usando o scikit-learn RadiusNeighborsClassifer -

Primeiro, importe o conjunto de dados da íris da seguinte forma -

from sklearn.datasets import load_iris
iris = load_iris()

Agora, precisamos dividir os dados em dados de treinamento e teste. Estaremos usando Sklearntrain_test_split função para dividir os dados na proporção de 70 (dados de treinamento) e 20 (dados de teste) -

X = iris.data[:, :4]
y = iris.target
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.20)

Em seguida, faremos o escalonamento de dados com a ajuda do módulo de pré-processamento Sklearn da seguinte maneira -

from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
scaler.fit(X_train)
X_train = scaler.transform(X_train)
X_test = scaler.transform(X_test)

Em seguida, importe o RadiusneighborsClassifier classe do Sklearn e forneça o valor de radius da seguinte forma -

from sklearn.neighbors import RadiusNeighborsClassifier
rnc = RadiusNeighborsClassifier(radius = 5)
rnc.fit(X_train, y_train)

Exemplo

Agora, crie e preveja a classe de duas observações da seguinte forma -

classes = {0:'setosa',1:'versicolor',2:'virginicia'}
x_new = [[1,1,1,1]]
y_predict = rnc.predict(x_new)
print(classes[y_predict[0]])

Resultado

versicolor

Programa completo de trabalho / executável

from sklearn.datasets import load_iris
iris = load_iris()
X = iris.data[:, :4]

y = iris.target
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.20)

from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
scaler.fit(X_train)
X_train = scaler.transform(X_train)
X_test = scaler.transform(X_test)

from sklearn.neighbors import RadiusNeighborsClassifier
rnc = RadiusNeighborsClassifier(radius = 5)
rnc.fit(X_train, y_train)

classes = {0:'setosa',1:'versicolor',2:'virginicia'}
x_new = [[1,1,1,1]]
y_predict = rnc.predict(x_new)
print(classes[y_predict[0]])