Dear all,

I am trying to classify a dataset with a binary target. Number of positive
instances represents only the 3% of the total instances. I have tried
using SVC with neither auto_weight nor sample_weight and the confusion
matrix shows that all instances are classified as negative. However, if I
use either auto_weight:auto or sample_weight(computing the weight of each
instances proportional to the porcentaje of its target) then the confusion
matrix is the other way around(that means, all instances are classified as
positive).

What am I doing wrong?

This is how I have made the calls:

1) with no additional parameters:
SVC(probability=True, max_iter=1000, verbose=5)

2) with class_weight:
SVC(class_weight=Œauto¹, probability=True, max_iter=1000, verbose=5)

3) with sample_weight:
classifier = SVC(probability=True, max_iter=1000, verbose=5)

and later:

sample_weight = np.asarray(compute_sample_weight(np.unique(y_train),
y_train))
            classifier.fit(X_train, y_train, sample_weight=sample_weight)


def compute_sample_weight(classes, y_train):
    # Find the weight of each class as present in y.
    le = LabelEncoder()
    y_ind = le.fit_transform(y_train)
    if not all(np.in1d(classes, le.classes_)):
        raise ValueError("classes should have valid labels that are in y")

    # inversely proportional to the number of samples in the class
    recip_freq = 1. / np.bincount(y_ind)
    weight = recip_freq[le.transform(classes)] / np.mean(recip_freq)
    weight_by_class = dict(zip(le.classes_, weight))
    y_sample_weight = [weight_by_class[e] for e in y_train]
    return y_sample_weight


Thanks.



Z.-


________________________________

Este mensaje y sus adjuntos se dirigen exclusivamente a su destinatario, puede 
contener información privilegiada o confidencial y es para uso exclusivo de la 
persona o entidad de destino. Si no es usted. el destinatario indicado, queda 
notificado de que la lectura, utilización, divulgación y/o copia sin 
autorización puede estar prohibida en virtud de la legislación vigente. Si ha 
recibido este mensaje por error, le rogamos que nos lo comunique inmediatamente 
por esta misma vía y proceda a su destrucción.

The information contained in this transmission is privileged and confidential 
information intended only for the use of the individual or entity named above. 
If the reader of this message is not the intended recipient, you are hereby 
notified that any dissemination, distribution or copying of this communication 
is strictly prohibited. If you have received this transmission in error, do not 
read it. Please immediately reply to the sender that you have received this 
communication in error and then delete it.

Esta mensagem e seus anexos se dirigem exclusivamente ao seu destinatário, pode 
conter informação privilegiada ou confidencial e é para uso exclusivo da pessoa 
ou entidade de destino. Se não é vossa senhoria o destinatário indicado, fica 
notificado de que a leitura, utilização, divulgação e/ou cópia sem autorização 
pode estar proibida em virtude da legislação vigente. Se recebeu esta mensagem 
por erro, rogamos-lhe que nos o comunique imediatamente por esta mesma via e 
proceda a sua destruição

------------------------------------------------------------------------------
Want excitement?
Manually upgrade your production database.
When you want reliability, choose Perforce.
Perforce version control. Predictably reliable.
http://pubads.g.doubleclick.net/gampad/clk?id=157508191&iu=/4140/ostg.clktrk
_______________________________________________
Scikit-learn-general mailing list
Scikit-learn-general@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/scikit-learn-general

Reply via email to