在Scikit中,是什么意味着是否需要参数?

时间:2017-11-22 18:48:34

标签: python scikit-learn

我正在阅读使用Python的人工智能并在完成一个示例时,我决定根据本书中使用的一种方法检查sklearn包文档。在查看文档时,我注意到import java.util.*; import java.io.*; import java.awt.*; import java.awt.event.*; import javax.swing.*; public class User{ int rank; String name; String pass; //Added boolean up here boolean validUser; User(){ Scanner s = new Scanner(System.in); System.out.println(" Login\n1.New user\n2.Old user"); int in = s.nextInt(); //Make sure it is set to false validUser = false; while(!validUser){ if(in == 1){ //create new user }else if(in == 2){ JFrame loginFrame = new JFrame(); loginFrame.setVisible(true); loginFrame.setLayout(null); loginFrame.setSize(120+14,180+35); JLabel enterName = new JLabel("Enter Username:"); enterName.setBounds(10,10,100,20); JTextField nameField = new JTextField(); nameField.setBounds(120,10,130,20); JLabel enterPass = new JLabel("Enter Password:"); enterPass.setBounds(10,40,100,20); JPasswordField passField = new JPasswordField(); passField.setBounds(120,40,130,20); JButton hitEnter = new JButton("Login"); hitEnter.setBounds(10,70,250,20); loginFrame.add(enterName); loginFrame.add(nameField); loginFrame.add(enterPass); loginFrame.add(passField); loginFrame.add(hitEnter); loginFrame.setSize(270+14,100+36); hitEnter.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent enter){ name = nameField.getText(); pass = new String(passField.getText()); validUser = checkUser(filename,name,pass); if(validUser){ loginFrame.setVisible(false); //some how break the for loop from here } } }); }else{ System.out.println("Invalid input."); } } } 方法有两个参数,即阈值和副本。该文档显示以下内容:sklearn.preprocessing.Binarizer

然而,在本书的例子中,我们只使用了阈值参数而不是使用的复制参数:

class sklearn.preprocessing.Binarizer(threshold=0.0, copy=True)

一旦我完成了本书,我想知道如何浏览文档,那么有人知道sklearn或scikit文档中不需要的参数的符号吗?

提前谢谢。

1 个答案:

答案 0 :(得分:2)

在Python中,如果函数定义为参数指定了值,则该值将作为默认值。指定新值将覆盖默认值。但是,可以在不覆盖任何默认值的情况下调用该函数。

例如,如果我定义以下函数:

def add_numbers(param_one=1, param_two=2):
    return param_one + param_two

然后,我可以做以下事情:

>>> add_numbers()
3

>>> add_numbers(param_one=2)
4

>>> add_numbers(param_two=1)
2

>>> add_numbers(param_one=2, param_two=3)
5

在你的情况下,你的预处理函数调用.Binarizer(threshold = 2.1)相当于preprocessing.Binarizer(threshold = 2.1,copy = True)。

注意:您还可以为一个或所有参数定义一个没有默认值的函数。在这种情况下,如果不指定参数值,则无法调用该函数。

实施例。

def add_numbers(param_one, param_two=2):
    return param_one + param_two

>>> add_numbers()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: add_numbers() takes at least 1 argument (0 given)