PythonGuides-博客中文翻译-十五-

PythonGuides 博客中文翻译(十五)

原文:PythonGuides Blog

协议:CC BY-NC-SA 4.0

通过索引从 Python 字符串中移除字符

原文:https://pythonguides.com/remove-character-from-python-string-through-index/

Python & Machine Learning training courses

在这里,我们将讨论如何以不同的方式通过索引从 Python 的字符串中删除一个字符,并讨论一些可以使用 Python 来执行它们的方法。以下是我们将要讨论的主题

  • 如何使用切片和连接方法通过索引从 Python 字符串中移除字符
  • 如何使用 native 方法通过索引从 Python 字符串中移除字符
  • 如何使用 replace 方法通过索引从 Python 字符串中移除字符
  • 如何使用拆分方法通过索引从 Python 字符串中移除字符
  • 如何使用连接和列表理解方法通过索引从 Python 字符串中移除字符

目录

如何使用切片和拼接方法通过索引从 Python 字符串中删除字符

  • 在这个例子中,我们将讨论如何使用 Python 中的切片和连接方法通过索引从字符串中删除字符。
  • 要从元素集合中提取一部分元素,使用 Python 中的 slice() 方法。
  • 通过指定索引,用户可以访问特定范围的元素。使用弦切片,可以修剪位置 I 之前和位置 I 之后的弦
  • 此外,您可以连接两个或多个字符串。字符串串联是使用运算符或函数来组合两个或更多字符串的过程。通过使用+运算符,我们将连接两个字符串。

举例:

让我们举一个例子,看看如何通过使用切片和连接方法,通过索引从 Python 字符串中删除一个字符。

源代码:

**# Input String**
state_name_in_USA = 'Alaska, Arizona, Alabama'
print("Input string: ",state_name_in_USA  )
 **# By using the slice and concatenation method** result = state_name_in_USA[:1] + state_name_in_USA[2:]
 **# Removing. character at 2nd index**
print ("Removing character from second index in string : ", result)

下面是以下给定代码的实现。

How-to-remove a character from a Python string through index by using the slice and concatenation method

How to remove a character from a Python string through index by using the slice and concatenation method

这就是我们如何使用切片和连接方法通过索引从 Python 字符串中删除字符。

阅读:如何在 Python 中修剪字符串

如何使用 native 方法通过 index 从 Python 字符串中删除字符

  • 在本节中,我们将讨论如何使用 Python 中的 native 方法通过索引从 Python 字符串中移除字符。
  • 这里我们将使用 for 循环的概念,在出现字符时追加字符,并在索引为 I 时从初始 for 实例创建一个新字符串。

举例:

**# Input string**
Bikes_in_USA = "Harley-Davidson, BMW"
print("Original string :",Bikes_in_USA )

**# Removing element at index 3**
result = ""

for m in range(len(Bikes_in_USA)):
    if m != 3:
        result = result + Bikes_in_USA[m]

**# Display the Content**
print ("Remove character from input string by index 3 : ", result)

在下面给出的代码中,我们创建了一个名为 'Bikes_in_USA' 的输入字符串,然后创建一个空字符串来存储新的结果。接下来,我们使用 for 循环并迭代这些值。

你可以参考下面的截图。

How to remove a character from a Python string through index by using the native method

How to remove a character from a Python string through index by using the native method

正如你在截图中看到的,我们已经通过索引使用 native 方法从 Python 字符串中删除了一个字符。

阅读:Python 中如何在数字前加零

如何使用替换方法通过索引从 Python 字符串中删除字符

  • 在本节中,我们将了解如何使用 replace() 方法通过 Python 中的索引从字符串中删除字符。
  • 在 Python 中用新字符替换单个字符时,使用 replace() 方法,通过该方法,我们将替换作为(")提供的空子串的 I 索引处的字符。
  • 在这个例子中,如果我们想从字符串中删除字符,那么我们必须提到索引号。

语法:

让我们看一下语法并理解 Python 中的 str.replace() 方法的工作原理。

str.replace(old,  new, count)
  • 它由几个参数组成
    • old :-该参数定义了将要被替换的字符串。
    • new :用新值(一个字符或字符串)替换现有值。
    • count :-一个整数值,表示要用新字符或子串替换多少个旧字符或子串。这是一个可选参数。

举例:

让我们举一个例子,看看如何使用 replace 方法通过索引从 Python 字符串中删除一个字符

源代码:

def del_character(t, m):

    for l in range(len(t)):
        if l==m:
            t=t.replace(t[m],"",1)
    return t

Country_name = "U.S.A, China"
**# Remove 3rd index character**
m = 3
print(del_character(Country_name,m-1))

在上面的代码中,我们首先定义了一个函数,它接受一个字符串和一个索引,然后移除该索引处的字符。接下来,我们执行从 0 到输入字符串长度的循环,并检查当前迭代是否等于索引 i 。如果被识别,替换索引 I 处的字符的空字符串。

你可以参考下面的截图

How to remove a character from a Python string through index by using the replace method

How to remove a character from a Python string through index by using the replace method

在这个例子中,我们已经理解了如何使用 replace 方法通过索引从 Python 字符串中删除字符。

阅读:

阅读:Python 中如何在数字前加零

如何使用拆分方法通过索引从 Python 字符串中删除字符

  • 在这种方法中,字符串将被分成两半,一个在索引 I 之前,另一个在索引 I 之后。不包含第 I 个字符的字符串可以通过组合这两个字符串来生成。
  • 我们将使用切片的概念来分割字符串。当我们为一个字符串指定开始和结束索引时,我们可以把它分割成更小的条目。
  • 通过使用切片 [i:] 我们将获得除了所选字符之外的剩余字符串。

举例:

让我们举一个例子,看看如何使用 Python 中的 splitting 方法,通过索引从 Python 字符串中删除一个字符。

源代码:

def deletechar(n, m):
    val_1 = n[ : m]
    val_2 = n[m + 1: ]

    return val_1+val_2

Country_name = "United States of America"
print("Input string :", Country_name )
m = 4
print(deletechar(Country_name,m-1))

该字符串被分成两个子字符串,每个子字符串存储在一个单独的变量中。然后使用连接操作符 (+) 将两个子字符串连接起来。接下来,我们必须传递给 m-1 给定函数中的索引。

下面是以下给定代码的执行。

How to remove a character from a Python string through index by using the splitting method

How to remove a character from a Python string through index by using the splitting method

这就是如何使用 Python 中的 splitting 方法通过索引从 Python 字符串中删除字符。

阅读:二分搜索法的 Python 程序

如何使用连接和列表理解方法通过索引从 Python 字符串中删除字符

  • 在这一节中,我们将讨论如何使用列表理解和 join() 方法通过索引从字符串中删除字符。
  • 使用 Python 中的 join() 方法将一个字符串和一个 iterable 对象连接起来。它返回一个产品字符串,该字符串组合了 iterable 中的所有字符串。
  • 通过使用 list comprehension 和 join 方法,我们可以很容易地将每个 string 元素拆分成相关的 list 元素,然后将它们连接起来以声明一个新的 string。
  • 在这种方法中,首先将每个字符串元素转换成一个列表元素,然后将它们中的每一个组合起来,创建一个除给定索引之外的字符串。

举例:

这里我们将举一个例子,了解如何通过使用 list comprehension 和 join() 方法,通过索引从字符串中删除字符。

源代码:

Country_name = "U.S.A, Germany, Australia"
print ("Input string: ", Country_name)

**# By using the join() method** 
output = ''.join([Country_name [i] for i in range(len(Country_name )) if i != 2]) 

 **# Display the Content** 
print ("Character remove from 2nd position: ",output) 

在上面的代码中,我们首先创建了一个名为“Country _ name”的输入字符串,并在其中为它分配了国家名称。接下来,我们使用了 join() 方法并用一个设定的条件迭代这些值,如果 i!=2 ,在本例中,I 表示索引号。

下面是以下代码的截图

How to remove a character from a Python string through index by using the join and list comprehension method

How to remove a character from a Python string through index by using the join and list comprehension method

您可能也喜欢阅读以下 Python 教程。

在本文中,我们讨论了如何以不同的方式通过索引从 Python 的字符串中删除字符,并讨论了一些可以使用 Python 来执行它们的方法。

  • 如何使用切片和连接方法通过索引从 Python 字符串中移除字符
  • 如何使用 native 方法通过索引从 Python 字符串中移除字符
  • 如何使用 replace 方法通过索引从 Python 字符串中移除字符
  • 如何使用拆分方法通过索引从 Python 字符串中移除字符
  • 如何使用连接和列表理解方法通过索引从 Python 字符串中移除字符

Machine Learning From Basic to AdvancedArvind

Arvind 目前是 TSInfo Technologies 的高级 Python 开发人员。他精通 Python 库,如 NumPy 和 Tensorflow。

从字符串 Python 中移除字符(35 个示例)

原文:https://pythonguides.com/remove-character-from-string-python/

Python & Machine Learning training courses

在本 Python 教程中,我们将讨论如何从字符串 Python 中移除字符。在这里,我添加了 35 个 Python 中各种字符串操作的例子。

我们还将检查:

  • Python 从字符串中删除一个字符
  • Python 使用 replace()方法从字符串中删除字符
  • Python 使用 replace()方法从字符串中删除多个字符
  • Python 使用 translate()方法从字符串中删除字符
  • Python 使用 translate()方法从字符串中删除多个字符
  • 从字符串 python 中移除第一个字符
  • 从字符串 python 中删除 n 个字符
  • 从字符串 python 中移除换行符
  • 在 python 中移除指定次数
  • Python 替换一个字符串中的多个字符
  • 从字符串 python 中移除字符串
  • 如何从字符串 python 中移除标点符号
  • 移除字符串 python 中的最后一个字符
  • 从字符串 python 中移除最后 4 个字符
  • Python 删除了字符串中所有空格
  • Python 只删除前导和尾随空格
  • 在 python 中从一个字符串中删除多个字符
  • 从字符串 python 中移除空格
  • python 从字符串中剥离子串
  • 通过索引从字符串 python 中移除字符
  • 从字符串中删除一个字符 python 熊猫
  • Python 从字符串中删除一个特殊字符
  • Python 从列表中的字符串中删除一个字符
  • Python 从字符串中删除一个字符的所有实例
  • Python 从字符串正则表达式中删除字符
  • Python 从字符串开头移除字符
  • Python 从字符串末尾移除字符
  • python 从字符串中移除字符(如果存在)
  • Python 从索引后的字符串中删除字符
  • 从字符串 Python 中移除字母
  • 从字符串 Python pandas 中删除多个字符
  • Python 剥离前两个字符
  • Python strip 最后两个字符
  • 从字符串 Python 中移除*

目录

Python 从字符串中删除一个字符

让我们看一个 Python 从字符串中删除字符的例子。

在 Python 中,从字符串中删除字符在许多应用程序中非常有用。过滤文本,情感总是需要能够从字符串中删除一个字符的主要方法和解决方案。

  • 使用 replace()和 translate()方法可以很容易地从字符串中删除一个字符。

  • 要从字符串中删除一个字符,有许多方法可以解决这个问题。

  • 我们将讨论以下方法。

    • 使用 Python replace()方法
    • 使用 translate()方法
    • 使用切片方法
    • 使用 join()方法
    • 使用 filter()方法
  • Replace() :这个函数是一个内置的字符串方法,它将一个字符替换为另一个字符,并且总是显示一个新的字符串作为结果。

语法:

下面是 replace() 方法的语法

replace
       [
        old_str
        new_str
        instance
       ]
  • Translate() :该方法将通过替换字符来改变字符串。我们必须为字符生成 Unicode,并生成 None 作为替换值,以便从主字符串中删除该值。

语法:

下面是 translate() 方法的语法

str.translate(table)

存储两个字符之间映射的转换表是由 maketrans()方法创建的。

  • Slicing() :这个方法返回介于索引 a 和 b 之间的字符。如果用户想要删除特定索引处的字符,那么我们使用 Slicing()方法。

语法:

String
      [start:end:step_value]

举例:

让我们举一个例子来检查如何使用切片方法从字符串中删除字符

str="Japan"
str=str[:3]+str[4:] #remove character at index 3
print(str) 

下面是以下代码的截图

Python remove character from string using slicing method

Python Remove character from string using slicing method

  • Join() :是将 iterable 对象的每个值和字符与字符串连接起来,返回一个新字符串的方法。要从字符串中删除一个字符,我们可以很容易地使用 join()方法,我们将不得不遍历字符串序列并删除该字符。

语法:

string_name.join(iterable) 

举例:

让我们举一个例子来检查如何使用 join 方法从字符串中删除字符

str="Australia Germany France"
list=['a','r'] 
str2="".join(i for i in str if i not in list) 
print(str2) 

下面是以下代码的截图

Python remove character from a string using join

Python Remove character from a string using join

  • Filter():Filter 方法在 join()函数的帮助下给出一个可迭代序列,该函数测试可迭代序列中的每个值和字符是否为真。

举例:

让我们举一个例子来检查如何使用 filter() 方法从字符串中删除一个字符

str="Russia England China"
remove_char=['a','i','n'] 
new=filter(lambda i: i not in remove_char,str) 
new_str="" 
for i in new: 
    new_str+=i 
print(new_str) 

下面是以下代码的截图

Python remove character from string using filter

Python remove a character from a string using a filter

阅读:删除 python 中的 Unicode 字符

Python 使用 replace()方法从字符串中删除一个字符

  • 在这个方法中,我们将学习和讨论如何使用 replace()方法从字符串中删除一个字符。
  • 这个方法可以很容易地用空白字符串 char 替换任何字符。
  • 我们可以使用 replace()方法用一个新的字符来删除一个字符。
  • 使用""作为新字符可以很容易地从字符串中删除一个字符。

语法:

replace
       [
        old_str
        new_str
        instance
       ]

举例:

让我们举一个例子来检查如何使用 replace()方法从字符串中删除一个字符

str1 = "Germany France"
print(str1.replace('e','o'))
  • 在上面的代码中,我们将创建一个变量并分配一个字符串,然后使用函数 str.replace()。
  • 在本例中,我们将用“o”替换字符“e”。
  • 如果我们生成空字符串作为第二个参数,那么这个字符将很容易从字符串中删除。

下面是以下代码的截图

Python remove character from string using replace

Python remove a character from string using replace

阅读: Python 从字符串中移除子串

Python 使用 replace()方法从一个字符串中删除多个字符

  • 在这个方法中,我们将学习和讨论如何使用 replace()方法从一个字符串中删除多个字符。
  • 要从一个字符串中删除多个字符,我们可以很容易地使用函数 str.replace 并传递一个参数 multiple characters。
  • String 类(Str)提供了一个 replace(old_str,new_str)的方法来替换一个字符串中的子字符串。它用新子字符串替换旧子字符串的所有元素。

语法

下面是 replace()方法的语法

replace
       [
        old_str
        new_str
        instance
       ]

举例:

让我们举一个例子来检查如何使用 replace 方法从字符串中删除多个字符

str = "Germany France"
result = str.replace('a', 'b').replace('e', 'u')
print(result)

下面是以下代码的截图

Python remove multiple characters from a string using replace

Python remove multiple characters from a string using replace

阅读 Python 在字典中查找最大值

Python 使用 translate()方法从字符串中删除一个字符

  • 在这个方法中,我们将学习和讨论如何使用 translate()方法从字符串中删除一个字符。
  • 在 translate()方法中,我们必须为字符生成 Unicode 码位,并生成“None”作为替换,以便从结果字符串中删除它。
  • 在 translate()中,我们可以很容易地使用 ord()函数来获取 unicode 字符。

语法:

下面是 translate() 方法的语法

str.translate(table)

maketrans()方法声明了存储两个字符之间映射的转换表。

举例:

让我们举一个例子来检查如何使用 translate 方法从字符串中删除一个字符。

str = "U.S.A southAfrica Australia "

print(str.translate({ord('r'): None}))

下面是以下代码的截图

Python remove a character from string using translate

Python remove a character from a string using translate

阅读:如何在 Python 中把列表转换成字符串

Python 使用 translate()方法从字符串中删除多个字符

  • 在本节中,我们将学习并讨论如何使用 translate()方法从字符串中删除多个字符。
  • 如果用户想要替换多个字符,可以使用序列迭代器很容易地完成,它遍历我们想要从字符串中删除的字符串。
  • 我们使用列表理解方法来迭代每个字符。

语法:

下面是 translate() 方法的语法

str.translate(table)

举例:

让我们举一个例子来检查如何使用 translate()方法从一个字符串中删除多个字符。

str = "Micheal George James"

print(str.translate({ord(i): None for i in 'aeo'}))

下面是以下代码的截图

Python remove multiple characters from a string using translate

Python remove multiple characters from a string using translate

删除字符串 Python 的第一个字符

现在,我们将看看如何在 Python 中从字符串中移除的第一个字符。我们可以使用 replace()函数来删除第二个参数为空字符串的字符,然后删除该字符。

举例:

my_string = 'Welcome'
print(my_string.replace('W', '')

写完上面的代码后(从 string python 中删除第一个字符),您将打印出 " my_string.replace() " ,然后输出将显示为 " elcome " 。这里,第一个字符是“W ”,在 python 中被替换为空字符串。

你可以参考下面的截图来删除字符串 python 中的第一个字符

Remove character from string Python

Remove the first character from string python

这就是我们如何从字符串 python 中移除第一个字符。

阅读:在 Python 中把 string 转换成 float 各种例子

从字符串 python 中删除 n 个字符

现在,我们将看到如何用 Python 从字符串中移除 n 个字符。我们可以使用字符串切片“[n:]”,其中 n 表示要从字符串中删除的字符数量。

举例:

my_string = 'Welcome'
remove = my_string[3:]
print(remove)

写完上面的代码(从字符串 python 中删除 n 个字符),你将打印出 " remove " ,然后输出将显示为 " come " 。这里,n 是 3,所以前 3 个字符从字符串 python 中删除。

你可以参考下面的截图来删除字符串 python 中的 n 字符

Remove n character from string python

Remove n character from string python

这就是我们如何从字符串 python 中移除 n 个字符。

阅读:追加到字符串 Python

从字符串 python 中移除换行符

在 python 中,要从字符串中移除换行符,我们可以使用 replace() 函数移除字符串中的“\n ”,它将移除所有换行符。

举例:

my_string = 'Welcome\nto\n2020'
print(my_string.replace('\n', ''))

写完上面的代码后(从 string python 中去掉换行符),你将打印出 " my_string.replace() " ,然后输出将显示为 " Welcometo2020 " 。这里,“\n”被删除,空字符串作为第二个参数,换行符从字符串中删除。

你可以参考下面的截图来删除字符串 python 中的换行

Remove newline from string python

Python Remove newline from string

这就是我们如何从字符串 python 中移除换行的方法

阅读:添加字符串到列表 Python +示例

在 python 中删除指定次数

在 python 中,要删除指定的次数,我们可以使用带有 3 个参数的 replace() 函数来指定字符串中应该发生替换的次数。

举例:

my_string = 'Welcome'
print(my_string.replace('e', 'E', 2))

写完上面的代码(在 python 中去掉指定的次数),你将打印出 " my_string.replace() " 然后输出将显示为 " WElcomE " 。这里,“E”被删除,第二个参数是“E ”,第三个参数是替换发生的次数。

你可以参考下面的截图来删除 python 中指定的次数

Remove specified number of times in python

Remove specified number of times in python

这就是我们如何在 python 中移除指定次数的方法。

Python 替换一个字符串中的多个字符

在 python 中,要替换一个字符串中的多个字符,我们将使用 str.replace() 来替换字符,它将使用替换的字符创建一个新字符串。

举例:

my_string = "Sixty"
remove = ['t', 'y']
for value in remove:
my_string = my_string.replace(value, '')
print(my_string)

写完上面的代码(python 替换一个字符串中的多个字符),你将打印出 " my_string " ,然后输出将显示为 " Six " 。这里,“t”和“y”旧值被替换为空字符串 new。

你可以参考下面的 python 截图替换一个字符串中的多个字符

Python replace multiple characters in a string

这就是我们如何在字符串中替换多个字符的方法。

阅读: Python 程序反转字符串示例

从字符串 python 中移除字符串

在 python 中,要从字符串中删除一个字符串,我们将使用一个 str.replace() 方法从字符串 python 中删除该字符串,它将创建一个新的字符串。

举例:

my_string = "Sixty people arrived in the hostel"
remove = ['arrived']
for value in remove:
my_string = my_string.replace(value, '')
print(my_string)

写完上面的代码后(从 string python 中移除 string),你将打印出 " my_string " ,然后输出将显示为"酒店中的六十个人"。在这里,“到达”与空字符串一起被删除。

可以参考下面的截图 python 从字符串中移除字符串 python

Remove string from string python

这就是我们如何从字符串 python 中移除字符串的方法

如何删除字符串中的标点符号 python

在 python 中,要删除字符串 python 中的标点符号,我们将使用 for 循环来删除字符串 python 中的所有标点符号。

举例:

punctuation = '''!/?@#$%^&*_~()-[]{};:'"\,<>.'''
my_string = "Hello!? World!!"
remove_punct = ""
for character in my_string:
if character not in punctuation:
remove_punct = remove_punct + character
print(remove_punct)

写完上面的代码(如何从字符串 python 中删除标点符号),你将打印出 " remove_punct " ,然后输出将显示为 " Hello World " 。这里,我们将使用 for 循环检查字符串的每个字符,它将删除字符串中的所有标点符号。

你可以参考下面的截图,了解如何从字符串 python 中删除标点符号

How to remove punctuation from a string python

这就是我们如何从字符串中删除标点符号的方法

阅读: Python 字符串格式化示例

删除字符串 python 的最后一个字符

在 python 中,为了从字符串中移除最后一个字符,我们将使用字符串切片技术来移除最后一个字符。使用负索引 "my_string[:-1]" 将移除字符串的最后一个字符。

举例:

my_string = 'University'
remove_char = my_string[:-1]
print(remove_char)

写完上面的代码后(从字符串 python 中删除最后一个字符),你将打印出 "remove_char " ,然后输出将显示为 " Universit " 。在这里,我们将使用负索引 -1 来删除大学中的最后一个字符。

你可以参考下面的截图删除字符串 python 中的最后一个字符

Remove the last character from string python

这就是我们如何从字符串 python 中移除最后一个字符的方法

删除字符串 python 的最后 4 个字符

在 python 中,为了从字符串 python 中移除最后 4 个字符,我们将使用字符串切片技术,通过使用负索引“my_string[:-4]”来移除最后 4 个字符,并且它将移除字符串的最后 4 个字符。

举例:

my_string = 'University'
remove_char = my_string[:-4]
print(remove_char)

在编写完上面的代码(从字符串 python 中删除最后 4 个字符)之后,一旦打印出 "remove_char " ,输出将显示为 " Univer" 。这里,我们将使用一个负索引 -4 来删除大学的最后 4 个字符。

你可以参考下面的截图,去掉字符串 python 中的最后 4 个字符

Remove last 4 characters from string python

这就是我们如何从字符串 python 中删除最后 4 个字符

阅读:如何在 python 中连接字符串

Python 删除字符串中的所有空格

在 python 中,为了删除字符串中的所有空白,我们将使用 replace() 来删除字符串中的所有空白。

举例:

my_string = " Welcome to Python "
remove = my_string.replace(" ", "")
print(remove)

写完上面的代码(python 删除字符串中的所有空格),你将打印出 "remove" ,然后输出将显示为 " WelcometoPython " 。这里,我们将使用 replace()删除字符串中的所有空格。

你可以参考下面的截图 python 去除字符串中的所有空格

Python remove all whitespace from a string

这就是我们如何从字符串 python 中移除所有空白的方法

阅读:如何将 Python 字符串转换成字节数组并举例

Python 只删除前导和尾随空格

在 python 中,为了只删除前导和尾随空格,我们将使用 strip()函数从字符串的开头和结尾删除前导和尾随字符。

举例:

my_string = " Welcome to Python \n\r\t "
remove = my_string.strip()
print(remove)

写完上面的代码(python 只删除前导和尾随空格),你将打印出“remove”,然后输出将显示为“欢迎使用 Python”。这里,我们将使用 strip()函数从字符串的开头和结尾删除前导和尾随字符以及空格。

你可以参考下面的截图 python 只删除前导和尾随空格。

Python remove only leading and trailing spaces

这就是 python 如何只删除前导和尾随空格

在 python 中从一个字符串中删除多个字符

  • 为了从一个字符串中删除多个字符,我们将首先创建一个原始字符串的副本。
  • 将需要删除的多个字符放入一个字符串中。
  • 然后使用 for-loop 遍历每个字符。
  • 然后调用 new_string.replace()用 new 替换 old。

举例:

o_string = "(Python@Guides)!"
characters_remove = "()@!"
new_string = o_string
for character in characters_remove:
  new_string = new_string.replace(character, "")
print(new_string)

在编写了上面的代码(在 python 中从一个字符串中删除多个字符)之后,一旦您打印了“new _ string”,那么输出将显示为“python guides”。在这里,字符串中的多个字符将被删除,它将返回一个排除这些字符的新字符串。

你可以参考下面的截图在 python 中从一个字符串中删除多个字符

Remove multiple characters from a string in python

Remove multiple characters from a string in python

上面的代码我们可以用来在 Python 中从一个字符串中移除多个字符。

阅读如何创建一个空的 Python 字典

如何从字符串 python 中删除空格

在 python 中,要删除字符串中的空格,我们有 replace()方法来删除单词之间的所有空格,它将删除字符串中的空白。

举例:

string = ' Welcome to Python '
remove = string.replace(" ", "")
print(remove)

写完上面的 Python 代码(从 string python 中删除空格),你将打印出 "remove" ,然后输出将出现 "WelcometoPython" 。这里,replace()将删除字符串中的所有空格。另外,你可以参考下面的截图。

Remove spaces from string python

Remove spaces from string python

上面的代码我们可以用来从字符串 python 中删除空格。

Python 从字符串中剥离子串

让我们看一个 Python 从字符串中剥离字符的例子。

python 中的 strip() 方法返回字符串的副本。它将从字符串中去除指定的字符。

举例:

my_str = "www.pythonguides"
r = my_str.strip("guides")
print(r)

在编写了上面的代码(python 从字符串中剥离字符)之后,一旦打印出“r”,输出将显示为“www .巨蟒"。这里, my_str.strip("guides") 用于从字符串中剥离字符 "guides"

你可以参考下面 python 从字符串中剥离字符的截图。

Python strip characters from a string

Python strip characters from a string

Python 字典读成 CSV

Python 从字符串中删除指定字符

  • 在这一节中,我们将学习如何在 Python 中从一个字符串中移除一个指定的字符。
  • Python 使用多种方法从字符串中删除一个字符,通过这些方法我们可以很容易地从字符串中删除一个字符。
  • 以下是方法列表
    • 字符串替换()
    • 字符串翻译()

String replace() 方法用另一个指定的字符替换一个指定的字符。

语法:

下面是字符串 replace()的语法

replace[

        old_Str1,
        new_Str2,
        instance
       ] 

让我们举一个例子来检查如何从字符串中删除一个字符

str1 = 'john'
print(str1.replace('o','')) 

下面是以下代码的截图

Python remove character from string

Python remove a character from string

String translate() :通过替换字符或删除字符来改变字符串。我们必须指定字符的 Unicode 作为替换,以便将其从字符串中删除。

让我们举一个例子来检查如何使用 translate()从字符串中删除一个字符

str1 = 'john'
print(str1.translate({ord('o'):None})) 

下面是下面给出的代码的截图。

Python remove character from string translate method

Python remove a character from string translate method

读取 Python 将字典转换为数组

通过索引从字符串 Python 中删除一个字符

  • 在本节中,我们将学习如何通过索引从字符串 Python 中移除字符。
  • 通过索引从字符串中删除一个字符我们可以很容易地使用 string by slicing 函数。

string Slicing()方法总是返回介于索引 a 和 b 之间的字符。从 a 开始,a+1,a+2……直到 b-1。

语法:

下面是字符串切片的语法。

String
      [start:end:step_value]

让我们举一个例子来检查如何通过索引从字符串 Python 中删除一个字符。

str1 = "William"
print(str1[3:-2]) 

下面是下面给出的代码的截图。

Remove a character from a string python by index

Remove a character from a string python by index

从字符串中删除一个字符 python 熊猫

Pandas 是一个 python 模块,用于数据操作、分析和清理。Python pandas 模块或库非常适合不同的数据集,比如我们可以处理表格数据或序列。

  • 在这个方法中,我们将学习和讨论如何从字符串 Python pandas 中删除一个字符。
  • 首先,我们必须创建一个数据框,其中一列存储一个字符串。
  • 然后,我们必须使用 str replace()方法,用另一个指定的字符指定一个字符。

语法:

下面是字符串切片的语法。

Column name
           [
            replace[

        old_Str1,
        new_Str2,
        instance
       ]
]

让我们举一个例子来检查如何从字符串 Python Pandas 中删除一个字符。

import pandas as pd

dt = {'ALPHABET':  ['a','z','f','h']

         }
df = pd.DataFrame(dt, columns= ['ALPHABET'])
df['ALPHABET'] = df['ALPHABET'].str.replace('a','l')
print (df) 

下面是下面给出的代码的截图。

Remove character from string python pandas

Remove character from string python pandas

读取从字典中获取所有值 Python

Python 从字符串中移除特殊字符

  • 在这一节中,我们将学习如何在 Python 中从字符串中移除一个特殊字符。
  • Python 使用多种方法从字符串中删除一个特殊字符,通过这些方法我们可以很容易地从字符串中删除一个字符。
  • 以下是方法列表
    • isalnum 页()
    • 过滤器(str.isalnum,Str2)

Str.isalnum()方法总是返回一个布尔值,这意味着所有特殊字符都将从字符串中删除,并输出结果 true。如果字符串中有特殊字符,它将始终返回 False。

让我们举一个例子来检查如何使用 str 从字符串中删除一个特殊字符。 isalnum()方法

str1 = "John! what's up#"
new_str2 = ''.join(char for char in str1 if char.isalnum())
print(new_str2)

下面是以下代码的截图

remove a special character from string in python

Remove a special character from string in python

filter(str.isalnum,Str2)函数也用于删除特殊字符。但是在这个函数中,我们没有在 str.isalnum,Str2 上使用 for 循环和 if 语句。我们将使用 filter()方法。

让我们举一个例子来检查如何使用 过滤器(str.isalnum,Str2) 从字符串中删除一个特殊字符

str2 = "John! what's up#"
new_str1 = ''.join(filter(str.isalnum,str2))
print(new_str1)

下面是以下代码的截图

Remove a special character from string in python using filter

Remove a special character from string in python using filter

上面的 Python 代码我们可以用来从字符串中删除一个特殊字符。

Python 从字符串列表中删除一个字符

  • 在这一节中,我们将学习如何在 Python 中从列表的字符串中删除一个字符。
  • String replace() 方法从字符串列表中替换一个字符。

语法:

以下是字符串替换的语法

replace[

        old_Str1,
        new_Str2,

       ] 

让我们举一个例子来检查如何从列表中的字符串中删除一个字符

str2=['a','e','k','h']
str3="Micheal"
for i in str2:
    str3=str3.replace(i,"")
print(str3)

下面是以下代码的截图

Remove a character from the string in the list

Remove a character from the string in the list

这是如何从 Python 列表中的字符串中删除字符。

阅读 Python 元组字典

Python 从字符串中移除一个字符的所有实例

  • 在这一节中,我们将学习如何从 Python 中的字符串中删除一个字符的所有实例。
  • String replace() 方法从字符串列表中替换一个字符。
  • 例如,要删除“California”中“a”的所有实例,我们必须使用字符串 replace()函数。

语法:

下面是字符串替换的语法。

replace[

        old_Str2,
        new_Str3,
        instance
       ] 

让我们举一个例子来检查如何从一个字符串中删除一个字符的所有实例。

str2="calfornia"
str3= str2.replace("a","")
print(str3)

下面是下面给出的代码的截图。

Remove all instances of a character from a string

Remove all instances of a character from a string

这就是如何在 Python 中从一个字符串中删除一个字符的所有实例。

Python 从字符串正则表达式中删除一个字符

  • 让我们看看如何在 Python 中使用 regex 从字符串中删除一个字符。在 Python 中,regex 代表一个正则表达式,它是一个字符序列,创建一个空间搜索模式来查找一个字符串。要在 Python 中使用 regex,我们可以使用‘re’模块。
  • 在 Python 中,match 和 findall 方法用于搜索一个模式,它已经被导入到re模块中。

例子:

让我们举一个例子,看看如何使用正则表达式从字符串中删除字符

假设你想从字符串中删除所有的‘o’字符,那么我们需要使用 sub() 函数来匹配给定字符串中的字符。在 Python 中,如果你想用空白字符替换字符串中的字符,那么使用 sub() 函数。

源代码:

import re
given_str = "Python is a good programmig language"
del_chr = r'o'

new_str = re.sub(del_chr, '', given_str)
print(new_str)

下面是以下给定代码的执行过程

Python remove a character from string regex

Python remove a character from string regex

阅读 Python 从两个列表中创建了一个字典

如何在 Python 中使用 regex 删除字符串中的多个字符

假设您想从字符串中删除所有的 'o ',' r ',' t' 字符,那么我们需要使用 sub() 函数来比较字符串中字符' o ',' r ',' t' 的所有情况。

源代码:

import re
str1 = "Micheal is a good boy"
new_cmp = r'[oit]'

out_str = re.sub(new_cmp, '', str1)
print(out_str) 

在上面的代码中,我们将首先导入“re”模块,然后创建一个变量“str 1”,并用双引号将一个字符串赋值。现在我们需要在‘new _ CMP’变量中传递一个模式,它将比较给定字符串中的所有字符。

下面是以下给定代码的实现

Python remove a character from string regex method

Python remove a character from the string regex method

Python 从字符串开头移除字符

  • 为了执行这个任务,我们可以使用不同的 Python 方法。第一种方法是使用 split() 函数从字符串开头删除一个字符。
  • 在 Python 中, split() 函数在指定的分隔符处将一个字符串分成一个列表。

举例:

让我们看看如何使用 split()函数从字符串中删除第一个字符

代码:

str1 = '!England!'
new_char = '!'

str2 = ''.join(str1.split(new_char, 1))
print(str2) 

在这个例子中,我们使用了 join 和 split() 函数的组合来移除给定字符的第一个情况。

下面是以下代码的截图

Python remove character from string beginning

Python remove a character from the string beginning

阅读 Python 字典弹出

使用 Slice()方法从字符串开头删除一个字符

为了解决这个问题,我们可以使用切片和连接方法的组合。在 Python 中, slice() 方法用于指定如何分割一个可迭代序列,而串联方法用于组合两个字符串。

源代码:

new_char = "Germany"

out_new_str = new_char[:0] +  new_char[1:] 
print ("Remove first character: ",out_new_str) 

在上面的例子中,我们从索引 0 到 1 对对象‘new _ char’进行了切片,我们得到了类似‘ermany’的字符串,因为我们已经从字符串中移除了第一个开始字符。

下面是以下给定代码的输出

Python remove character from string beginning method

Python remove a character from the string beginning method

通过使用 join()和列表理解方法

在这种方法中,字符串中的每个字符都被转换成列表中的一个等价字符。为了删除这个特殊的字符,我们必须提到在 join() 函数中的索引号作为一个参数。

源代码:

new_str3 = "Oliva"

output = ''.join([new_str3[m] for m in range(len(new_str3)) if m != 0]) 
print ("Remove first character: ", output) 

下面是以下给定代码的执行过程

Python remove character from string beginning

Python remove a character from the string beginning

通过列表读取 Python 循环

Python 从字符串末尾移除字符

  • 让我们看看如何在 Python 中从字符串中移除结束字符。
  • 在这里,我们可以应用负索引方法来删除字符串的结束字符。通过使用切片,它从开始的索引到结尾提取字符串。

源代码:

student_nam = 'China'

out = student_nam[:-1]
print("remove last character:",out)

下面是以下给定代码的执行过程

Python remove character from string end

Python remove a character from the string end

通过使用 split()函数删除最后一个字符

在这个例子中,我们使用了 join()和 split() 函数的组合来移除给定字符的最后一个情况,我们已经在代码中提到了要从字符串中移除哪个字符。

源代码:

giv_str = '!Japan'
new_char = 'n'

new_output = ''.join(giv_str.split(new_char, 1))
print(new_output) 

下面是以下给定代码的输出

Python remove character from string end split

Python remove a character from string end split

通过使用 rstrip()方法

在 Python 中, rstrip() 方法帮助用户删除给定字符串右侧的字符。此方法返回字符串的副本,并删除字符串中的所有尾随字符。

语法:

下面是 rstrip()方法的语法

rstrip([chars])

举例:

让我们举一个例子,看看如何从字符串中删除结束字符

stu_str = 'Elite'

new_result = stu_str.rstrip(stu_str[-1])
print(new_result)

下面是以下给定代码的实现

Python remove character from string end

Python remove a character from the string end

这就是如何在 Python 中从字符串中移除结束字符。

阅读 Python 字典包含+示例

Python 删除字符串中存在的字符

这里我们可以看到字符是否存在于字符串中,它将从字符串中删除一个字符,否则它将显示'不存在'。

源代码:

new_str1 = "Micheal"
new_str2 = "gf"

if new_str1.find(new_str2) != -1:
    print("Exist!")
else:
    print("Not Exist!")

下面是以下给定代码的输出

Python remove character from string if exists

Python remove a character from a string if exists

Python 从字符串中移除索引后的字符

  • 这里我们可以看到如何在 Python 中从 index 之后的字符串中删除一个字符。
  • 在这个例子中,我们已经指定了索引变量‘z’并分配了它们的编号。现在创建一个变量,并使用切片从字符串的特定索引处删除一个字符。

源代码:

new_char = "France"

z = 2
new_res =  new_char[:z] + new_char[z+1:]
print(new_res) 

下面是以下代码的截图

Python remove character from string after index

Python remove a character from the string after an index

阅读 Python 中的循环索引+示例

从字符串 Python 中删除字母

在 Python 中要从字符串中删除一个字母,我们可以使用 Python string.replace()方法。这个方法将帮助用户用一个新字符替换一个字符,但是在这个例子中,我们必须用一个空字符串替换一个字符。

源代码:

str_name = input("Enter the name: ")
new_name = str_name.replace("o", "")

print("Remove letter from name: ",new_name)

如果您执行这段代码,它会要求您输入名称。replace()方法从字符串中删除‘o’字符,并显示没有‘o’字符的结果。

下面是以下给定代码的执行过程

Remove letter from string Python

Remove a letter from string Python

从字符串中删除多个字符 Python 熊猫

  • 让我们看看如何使用 Python pandas 从一个字符串中删除多个字符。
  • 为了完成这个任务,我们可以使用 dataframe 和 pandas 的概念从一个字符串中删除多个字符。

举例:

import pandas as pd

new_val = pd.DataFrame({'spcial_char':['/','@','&','*','%']})
rem_char= new_val['spcial_char'].str.replace('&','')
print (rem_char)

下面是以下给定代码的执行过程

Remove multiple characters from string Python Pandas

Remove multiple characters from string Python Pandas

Python 剥离前两个字符

为了在 Python 中去掉字符串的前两个字符,我们可以应用切片方法的概念。在本例中, [2:] slice 表示从索引 2 开始,一直延续到结尾。

源代码:

str_new="This is my book"

b = str_new[2:]
print(b) 

下面是以下给定代码的输出

Python strip first two characters

Python strip first two characters

阅读 Python 字典理解

Python 剥离最后两个字符

  • 这里我们可以看到如何在 Python 中去掉字符串的最后两个字符。
  • 我们可以通过使用 list comprehension 和 list slicing() 方法来实现。为了从字符串列表中删除最后两个字符,我们将首先初始化一个列表,然后创建一个变量‘rem _ las’,我们在其中传递了切片方法。

举例:

new_lis = ['Newzealand']

rem_las = [m[ : -2] for m in new_lis]

print("strip last two characters:",rem_las)

下面是以下给定代码的执行过程

Python strip last two characters

Python strip last two characters

使用 strip()方法从字符串中删除最后两个字符

在 Python 中, strip() 函数从字符串的开头和结尾删除字符。如果你想删除字符串开头和结尾的空格,你可以使用 strip() 函数,它将返回相同的不带空格的字符串。

语法:

以下是给定代码的语法

"string".strip()

举例:

str2 = "John Appleseed**"

print(str2.strip('*')) 

下面是以下给定代码的实现

Python strip last two characters using strip

Python strip last two characters using strip

将*从字符串 Python 中移除

在这里,我们可以使用 join 和 split() 函数的组合来从 Python 中的字符串中移除' * '。

源代码:

str_new= '*France*'
new_char = '*'

res_str = ''.join(str_new.split(new_char, 7))
print("Remove * from string:",res_str) 

下面是以下给定代码的执行过程

remove from string python

remove from string python

您可能会喜欢以下 Python 教程:

在本教程中,我们学习了如何从字符串 Python 中移除字符。

  1. 如何在 Python 中从字符串中删除一个字符
  2. Python 使用 replace()方法从字符串中删除字符
  3. Python 使用 replace()方法从字符串中删除多个字符
  4. Python 使用 translate()方法从字符串中删除字符
  5. Python 使用 translate()方法从字符串中删除多个字符
  6. 从字符串 python 中移除第一个字符
  7. 从字符串 python 中删除 n 个字符
  8. 从字符串 python 中移除换行符
  9. 在 python 中移除指定次数
  10. Python 替换一个字符串中的多个字符
  11. 从字符串 python 中移除字符串
  12. 如何从字符串 python 中移除标点符号
  13. 移除字符串 python 中的最后一个字符
  14. 从字符串 python 中移除最后 4 个字符
  15. Python 删除了字符串中所有空格
  16. Python 只删除前导和尾随空格
  17. 在 python 中从一个字符串中删除多个字符
  18. 如何从字符串 python 中移除空格
  19. python 从字符串中剥离子字符串
  20. 通过索引从字符串 python 中移除字符
  21. 从字符串中删除一个字符 python 熊猫
  22. Python 从字符串中删除一个特殊字符
  23. Python 从列表中的字符串中删除一个字符
  24. Python 从字符串中删除一个字符的所有实例
  25. Python 从字符串正则表达式中删除字符
  26. Python 从字符串开头移除字符
  27. Python 从字符串末尾移除字符
  28. python 从字符串中移除字符(如果存在)
  29. Python 从索引后的字符串中删除字符
  30. 从字符串 Python 中移除字母
  31. 从字符串 Python pandas 中删除多个字符
  32. Python 剥离前两个字符
  33. Python strip 最后两个字符
  34. 从字符串 Python 中移除*

Bijay Kumar MVPBijay Kumar

Python 是美国最流行的语言之一。我从事 Python 工作已经有很长时间了,我在与 Tkinter、Pandas、NumPy、Turtle、Django、Matplotlib、Tensorflow、Scipy、Scikit-Learn 等各种库合作方面拥有专业知识。我有与美国、加拿大、英国、澳大利亚、新西兰等国家的各种客户合作的经验。查看我的个人资料。

enjoysharepoint.com/

如何在 Python 中删除字符串的第一个字符

原文:https://pythonguides.com/remove-first-character-from-a-string-in-python/

Python & Machine Learning training courses

在这个 Python 教程中,我们将讨论如何以不同的方式从 Python 中的字符串中移除第一个字符。考虑到 Python 字符串是不可变的,这意味着它不能被改变。

  1. 使用 python 中的切片方法移除字符串的第一个字符
  2. 使用 python 中的 replace 方法移除字符串的第一个字符
  3. 使用 python 中的 lstrip()方法移除字符串的第一个字符
  4. 使用 python 中的 translate 方法移除字符串的第一个字符
  5. 使用 python 中的 regex 方法移除字符串的第一个字符
  6. 使用 python 中的 split 函数移除字符串的第一个字符
  7. 使用 python 中的连接和列表理解方法移除字符串的第一个字符
  8. 如何从 Python 熊猫字符串中删除第一个字符
  9. 如何在 Python 中删除字符串的第一个 n 字符
  10. 如何移除列表中字符串的第一个字符

目录

使用 python 中的切片方法删除字符串的第一个字符

  • 在这个例子中,我们将讨论如何使用切片方法在 Python 中删除字符串的第一个字符。
  • 切片技术可用于从 Python 字符串中移除第一个字符,生成的字符串将没有第一个字符。通过使用切片 [1:] ,我们将获得除第一个字符之外的剩余字符串。

举例:

让我们举一个例子,看看如何使用切片方法从 Python 中删除字符串的第一个字符。

**# Input string**
Country_name = "United States of America"
print("Input string: ", Country_name)

**# By using the slicing method**
result = Country_name[1:]
print("First character has been removed from string: ", result)

在下面给出的代码中,我们将首先创建一个名为 country_name 的输入字符串,其中我们将字符串值赋给美利坚合众国(USA)。

现在我们要删除第一个字符‘U’,为此我们将使用 str[:1] 的概念,并获取除第一个字符之外的剩余字符串。

你可以参考下面的截图

How to remove the first character from a string in Python

How to remove the first character from a string in Python

这是如何使用切片方法从 Python 中删除字符串的第一个字符。

阅读如何用 Python 从列表中获取字符串值

使用 python 中的 replace 方法删除字符串的第一个字符

  • 在本节中,我们将了解如何使用 replace() 方法从 Python 中删除字符串的第一个字符。
  • 在 Python 中用新字符替换单个字符时,使用 replace() 方法,这个方法将产生一个字符串的副本,用另一个子字符串替换一个子字符串的每个实例。
  • 在这个例子中,如果我们想从字符串中删除第一个字符,那么我们必须提到第二个参数是一个空字符串。

语法:

让我们看一下语法并理解 Python 中的 str.replace() 方法的工作原理。

str.replace(old,  new, count)
  • 它由几个参数组成
    • old :-该参数定义了将要被替换的字符串。
    • new :用新值(一个字符或字符串)替换现有值。
    • count :-一个整数值,表示要用新字符或子串替换多少个旧字符或子串。这是一个可选参数。

举例:

这里我们将举一个例子,检查如何使用 replace() 方法从 Python 中删除字符串的第一个字符。

源代码 :-

**# Input string**
state_name_in_USA = 'Alaska'

**# Using replace() method**
result= state_name_in_USA.replace('A', '')

**# Display the content**
print(result)

在上面的例子中,我们使用了 str.replace() 函数,在这个函数中,我们提到了旧字符‘A’,并用一个新字符替换了它,但是在这种情况下,我们必须删除这个字符,所以第二个参数将是一个空字符串。

下面是以下给定代码的实现

How to remove the first character from a string in Python using replace

How to remove the first character from a string in Python using replace

正如你在截图中看到的,我们已经讨论了如何使用 replace() 方法从 Python 中删除字符串的第一个字符。

读取 Python 按空格分割字符串

使用 python 中的 lstrip()方法删除字符串的第一个字符

  • 这里我们将了解如何使用 str.lstrip() 方法在 Python 中移除字符串的第一个字符。
  • 在移除作为输入提供的前导字符后, lstrip() 方法返回字符串的副本。如果没有给定参数,默认情况下会删除前导空格。

下面的示例代码展示了如何使用 str.lstrip() 方法删除字符串的开头字符。

源代码 :-

**# Input String**
Cars_in_USA = "Ford F-150, Chevrolet Silverado 1500"
print("Input string:",Cars_in_USA)

**# By using the lstrip()**
result = Cars_in_USA.lstrip("F")

**# Display the Content**
print("Remove first character:",result)

在下面给定的代码中,我们首先声明了一个变量‘Cars _ in _ USA’,然后分配美国最高的汽车。现在我们想要删除第一个字符,我们将使用 lstrip() 函数,在这个函数中,我们将第一个字符传递给它,我们想要从输入字符串中删除它。

下面是以下代码的截图

How to remove the first character from a string in Python using lstrip method

How to remove the first character from a string in Python using the lstrip() method

这就是我们如何使用 lstrip 方法从 Python 中删除字符串的第一个字符。

读取字符串中的 Python 查找数字

使用 python 中的 translate 方法删除字符串的第一个字符

  • 在本节中,我们将了解如何使用 translate() 方法从 Python 中删除字符串的第一个字符。
  • Python 的 translate() 函数用于返回一个字符串,字符串中的每个字符都被映射到翻译表中相应的位置。
  • 要从结果字符串中删除一个字符,我们必须给出该字符的 Unicode 码位和单词“None”作为替换。为了确定字符的 Unicode 码位,我们可以利用 ord() 方法。

语法:

下面是 Python 中 string.translate() 函数的语法。

string.translate(table)

注意:这个参数只接受一个参数,并定义一个转换表来存储两个字符之间的映射。

举例:

让我们举一个例子,看看如何使用 translate() 方法从 Python 中删除字符串的第一个字符

**# Input string**
cities_of_USA = 'New York, Los Angeles, California'
print("Original string:",cities_of_USA)

**# Using the translate() method**
result= cities_of_USA.translate({ord('N'): None})
print("First character removed:",result)

下面是以下给定代码的执行过程

How to remove the first character from a string in Python using translate method

How to remove the first character from a string in Python using the translate method

在这个例子中,我们已经了解了如何使用 translate 方法从 Python 中删除字符串的第一个字符。

使用 python 中的 regex 方法删除字符串的第一个字符

  • 既然我们已经介绍了 slicing()str.lstrip() 方法,那么是时候看看 python 中的 regex()函数了。regex 模块的' re '类具有函数re sub()。也可以使用它来删除初始字符。
  • Re.sub()用替换的值创建一个字符串,代表子串。当我们应用这个函数时,我们可以替换几个元素,它将替换所有匹配正则表达式的字符。

语法:

让我们看一下语法并理解 Python 中的re sub()方法的工作原理。

re.sub(pattern, repl, string, count=0, flags=0)
  • 它由几个参数组成
    • 模式:该参数定义了我们想要替换的字符串/模式。
    • repl :该参数用于定义替换花样的花样。
    • Count :默认情况下,取值为 0,它定义了应该发生的替换次数。

举例:

这里我们将举一个例子,看看如何在 Python 中删除字符串的第一个字符。

源代码:

import re
**# input string**
Country_name = "U.S.A, Australia, Belgium"

**# By using the re.sub() method**
result = re.sub(r'.', '', Country_name, count = 1)

**# Display the content**
print(result)

因此,我们将首先导入 re 库来验证这个函数,它在 re 模块中,然后,我们生成一个字符串。

然后执行re()命令,并在其中传递参数字符串和计数。这里,我们利用表达式“计数= 1”来表示字符删除。

你可以参考下面的截图

How to remove the first character from a string in Python using regex method

How to remove the first character from a string in Python using the regex method

这就是我们如何使用 regex 方法从 Python 中删除字符串的第一个字符。

读取 Python 字符串以列出

使用 python 中的 split 函数删除字符串的第一个字符

  • 在这个例子中,我们将讨论如何使用 split() 函数从 Python 中删除字符串的第一个字符。
  • 这个函数用于在给定的字符串被指定的分隔符分割后,将字符串分割成子字符串。
  • 此参数采用两个参数,并指定分隔符和最大拆分。它将在分割输入字符串后返回一个字符串列表。

举例:

Bikes_in_USA = 'Aprilia, Kawasaki, Ducati'
print("Input string:",Bikes_in_USA)
**#Using the split() function**

result= Bikes_in_USA.split("A")
print("First character remove from string:",result)

你可以参考下面的截图

How to remove the first character from a string in Python using split function

How to remove the first character from a string in Python using the split function

这就是如何使用 split 函数从 Python 中删除字符串的第一个字符

使用 python 中的连接和列表理解方法删除字符串的第一个字符

  • 在这一节中,我们将讨论如何使用 list comprehension 和 join() 方法从 Python 中删除字符串的第一个字符。
  • 使用 Python 中的 join() 方法将一个字符串和一个 iterable 对象连接起来。它返回一个产品字符串,该字符串组合了 iterable 中的所有字符串。
  • 通过使用 list comprehension 和 join 方法,我们可以很容易地将每个 string 元素拆分成相关的 list 元素,然后将它们连接起来以声明一个新的 string。

举例:

Country_name = "U.S.A, Germany, Australia"
 print ("Input string: ", Country_name)

**# By using the join() method** 
output = ''.join([Country_name [i] for i in range(len(Country_name )) if i != 0]) 

**# Display the Content** 
print ("First character remove from string: ",output) 

在下面给出的代码中,我们首先创建了一个名为“Country _ name”的输入字符串,并在其中指定了国家名称。接下来,我们使用了 join() 方法并用一个设定的条件迭代这些值,如果 i!=0 ,它将从字符串中删除第一个字符。

下面是以下给定代码的执行过程

How to remove the first character from a string in Python using join method

How to remove the first character from a string in Python using the join method

正如你在截图中看到的,我们已经讨论了如何使用连接和列表理解方法从 Python 中删除字符串的第一个字符。

阅读从字符串 Python 中移除字符

如何从 Python Pandas 字符串中删除第一个字符

  • 这里我们将讨论如何在 Python Pandas 中删除字符串的第一个字符。
  • 为了执行这个特定的任务,我们将使用切片方法。切片技术可用于从 Python 字符串中删除第一个字符,生成的字符串将没有第一个字符。通过使用切片 [1:] ,我们将获得除第一个字符之外的剩余字符串。

举例:

让我们举一个例子,看看如何在 Python Pandas 中删除字符串的第一个字符

import pandas as pd

df = pd.DataFrame({"Country_name":["U.S.A"]})
df
df["Country_name"].str[1:]

在上面的代码中,我们首先导入了 Pandas 库,然后使用 pd.dataframe() 创建了一个 dataframe,在这个函数中,我们指定了 country_name。接下来,我们使用切片方法,将从字符串中删除第一个字符。

你可以参考下面的截图

How to remove the first character from the string Python Pandas

How to remove the first character from the string Python Pandas

这就是如何在 Python Pandas 中删除字符串的第一个字符。

如何在 Python 中删除字符串的第一个 n 字符

  • 在这一节中,我们将讨论如何在 Python 中删除字符串的第一个 n 字符。
  • 如果您想从字符串中删除前 n 个字符,那么从第n个索引开始并在末尾结束对字符串进行切片。如果从第 n 个索引到末尾对字符串进行切片,则字符串的前 n 个字符将被删除,因为字符串中的字符是从零开始索引的。

举例:

下面是一个例子,我们将了解如何在 Python 中删除字符串的第一个 n 字符。

**# Input string**
Country_name = "United States of America"
print("Input string:",Country_name)

**# By using the slicing method**
result = Country_name[5:]
print("First character has been removed from string:",result)

在上面的代码中,我们设置 n=5,它将从输入字符串中删除前 5 个字符。

下面是以下给定代码的实现

How to remove the first n character from a string in Python

How to remove the first n character from a string in Python

这是如何在 Python 中删除字符串的第一个 n 字符。

阅读如何在 Python 中创建字符串

如何删除列表中字符串的第一个字符

  • 在这个例子中,我们将了解如何从 Python 列表中的每个字符串中删除第一个字符。
  • 在 Python 中用新字符替换单个字符时,使用 replace() 方法,这个方法将产生一个字符串的副本,用另一个子字符串替换一个子字符串的每个实例。
  • 在这个例子中,如果我们想删除列表中字符串的第一个字符,然后使用 for 循环方法迭代这些值。

示例:

这里我们将举一个例子,看看如何从 Python 列表中删除字符串的第一个字符。

cities_in_USA = ['New York', 'Los Angeles', 'Chicago', 'Houston']

**# Display original list**
print("Input list : ", cities_in_USA)

new_output = []
for m in cities_in_USA:
	m=m.replace(m[0],"",1)
	new_output.append(m)

**# Display the result**
print("First character has been removed from list :", new_output)

下面是以下代码的截图

How to remove the first character from each string in a list

How to remove the first character from each string in a list

这就是如何从列表中的每个字符串中删除第一个字符。

本文基于如何从 Python 字符串中删除第一个字符。已经提出了七种不同的方法,所有的方法都非常简单易懂。

  • 使用 python 中的切片方法移除字符串的第一个字符
  • 使用 python 中的 replace 方法移除字符串的第一个字符
  • 使用 python 中的 lstrip()方法移除字符串的第一个字符
  • 使用 python 中的 translate 方法移除字符串的第一个字符
  • 使用 python 中的 regex 方法移除字符串的第一个字符
  • 使用 python 中的 split 函数移除字符串的第一个字符
  • 使用 python 中的连接和列表理解方法移除字符串的第一个字符
  • 如何从 Python 熊猫字符串中删除第一个字符
  • 如何在 Python 中删除字符串的第一个 n 字符
  • 如何移除列表中字符串的第一个字符

您可能会喜欢以下 Python 教程:

Machine Learning From Basic to AdvancedArvind

Arvind 目前是 TSInfo Technologies 的高级 Python 开发人员。他精通 Python 库,如 NumPy 和 Tensorflow。

移除非 ASCII 字符 Python

原文:https://pythonguides.com/remove-non-ascii-characters-python/

Python & Machine Learning training courses

这篇 Python 教程讲的都是“去除非 ASCII 字符 Python ”。我们将会看到,如何用各种例子来删除 Python 中的非 ASCII 字符。

此外,我们将涵盖这些主题。

  • 移除非 ASCII 字符 Python 熊猫
  • 移除非 ASCII 字符 Python
  • 移除非 ASCII 字符 Python 正则表达式
  • 从 CSV Python 中移除非 ASCII 字符
  • 从文件 Python 中移除非 ASCII 字符
  • 去掉非 ASCII 字符 Python
  • Pyspark 替换非 ASCII 字符 Python
  • 从文本 Python 中移除非 ASCII 字符
  • Python 从字节中删除了非 ASCII 字符

ASCII 代表美国信息交换标准码。美国键盘上的所有关键字都有一些 ASCII 码。非 ASCII 码大多出现在不同国家的地区语言中。

例如,中文、日文、印度文等属于非 ASCII 字符。在本教程中,我们将学习如何删除 python 中的非 ASCII 字符。

您可能想知道非 ASCII 字符是什么样子的。这是非 ASCII 字符的例子。

¡¢£¤¥¦§¨©ª«¬®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇËÎÐÖÑ×Øψϑωϖℵℜ←↑→↓↔↵⇐⇑⇒⇓⇔∀

目录

删除非 ASCII 字符 Python 熊猫

  • 在这一节中,我们将学习如何删除 Python pandas 中的非 ASCII 字符。
  • 通过使用编码和解码功能,我们可以很容易地从 Pandas 数据帧中移除非 ASCII 字符。在 Python 中, encode() 函数用于使用给定的编码对字符串进行编码,解码意味着将一串字节转换成 Unicode 字符串。

源代码:

import pandas as pd

df = pd.Series(['m©ª«zy', '¤¥uw', 'ÆÇval 672'])
d= df.str.encode('ascii', 'ignore').str.decode('ascii')
print("After removing non-ascii:")
print(d)

在上面的代码中,我们首先导入了 Pandas 库,然后创建了一个数据帧,在其中我们分配了一些字符和非 ASCII 字符。

现在应用 encode() 函数,它将帮助用户将字符串编码成‘ASCII’,还将错误作为‘忽略’传递,以移除非 ASCII 字符。

下面是以下给定代码的执行过程

Remove Non ASCII Characters Python Pandas

Remove Non-ASCII Characters Python Pandas

阅读如何将 Python 数据帧转换成 JSON

删除非 ASCII 字符 Python

  • 在本期节目中,我们将讨论如何去除 Python 3 中的非 ASCII 字符。
  • 这里我们可以应用方法 str.encode() 从字符串中删除非 ASCII 字符。要执行这项任务,首先创建一个简单的字符串,并在其中分配多个字符,就像非 ASCII 字符一样。现在,首先我们将应用 encode()方法将字符串编码为 ASCII,然后使用 decode()方法帮助用户将字节字符串转换为新字符串。

举例:

new_str = "¡¢£ Py¼½¾thon is a be¹ºst prog®¯°ramming language±²³."

print("Original string:",new_str)
new_val = new_str.encode("ascii", "ignore")
updated_str = new_val.decode()

print("After romoving non-ascii:")
print(updated_str)

你可以参考下面的截图

Remove Non ASCII Characters Python

Remove Non-ASCII Characters Python

阅读如何在 Pandas 中把浮点数转换成整数

删除非 ASCII 字符 Python Regex

  • 让我们看看如何在 Python Regex 中移除非 ASCII 字符。
  • 在这个程序中,我们将看到如何使用正则表达式从字符串中删除非 ASCII 字符。在 Python 中,正则表达式可用于在字符串中搜索模式。在 Python 中, 're' 模块提供了在程序中使用正则表达式的支持。

源代码:

import re

String_value='JoÂÃÄÅhn i×Øψs a goωϖℵod b¡¢oy'
print("Original string:",String_value)
new_result = re.sub(r'[^\x00-\x7f]', "", String_value)

print("After removing ASC-II charcater from string : ")
print(new_result)

在上面的代码中,我们先导入 re 模块,然后在名为 'String_value' 的变量中创建一个字符串。

现在我们将使用函数re sub()从字符串中删除非 ASCII 字符,并将结果存储在输出变量‘new _ result’中。

一旦打印了' new_result' ,输出将显示更新后的字符串。

下面是以下给定代码的输出

Remove Non ASCII Characters Python Regex

Remove Non-ASCII Characters Python Regex

阅读 Python 将二进制转换成十进制

从 CSV Python 中删除非 ASCII 字符

  • 在这一节中,我们将学习如何在 Python 中从 CSV 文件中移除非 ASCII 字符。
  • 这里我们可以看到如何删除 CSV 文件中的非 ASCII 字符。为了完成这个任务,我们将应用 Pandas 方法,并在数据帧中使用 encode() 方法。

源代码:

import pandas as pd
data = pd.read_csv('test1.csv', encoding= 'unicode_escape')

new_val = data.encode("ascii", "ignore")
updated_str = new_val.decode()

print("After romoving non-ascii:")
print(updated_str) 

Remove Non ASCII Characters From CSV Python

Remove Non-ASCII Characters From CSV Python

正如您在屏幕截图中看到的,作为特定非 ASCII 字符的输出没有从 CSV 文件中删除,因为数据帧没有属性,并且在 CSV 文件模式下不会更新。

查看,如何在 Python 中获得前 N 行熊猫数据帧

剥离非 ASCII 字符 Python

  • 这里我们可以看到如何在 Python 中去除 ASCII 字符。
  • 在这个例子中,我们将使用. sub()方法,在这个方法中,我们分配了一个标准代码 '[^\x00-\x7f]' ,这个代码表示 0-127 ASCII 码之间的值,这个方法包含输入字符串‘new _ str’。一旦您将打印‘new _ result’,那么输出将显示新的字符串,并且其中不包含任何非 ASCII 字符。

源代码:

import re
new_str='Australia©ª«Germany'

new_result = re.sub(r'[^\x00-\x7f]', "", new_str)
print(new_result)

下面是以下给定代码的输出

Strip Out Non ASCII Characters Python

Strip Out Non-ASCII Characters Python

读取 Python 文件中的字数

如何剥离 Python 中的非 ASCII 字符

在这个程序中,我们将结合使用 ord()和 for 循环方法来删除字符串中的非 ASCII 字符。

在 Python 中, ord() 方法只接受单个字符,这个方法将帮助用户检查一个字符串是否包含单个 Unicode 字符。

举例:

new_val = "Mi©ª«chal is a³´µ¶·good b½¾¿oy"

new_res = ''.join([m if ord(m) < 128 else ' ' for m in new_val])

print("After strip ascii characters: ",new_res)

在上面的代码中,我们首先创建了一个字符串‘new _ val’,并为它们分配了非 ASCII 字符。

现在我们将在 ord()方法中使用 join() 函数。正如您在下面的屏幕截图中看到的,非 ASCII 字符从新字符串中删除后的输出。

你可以参考下面的截图

Strip Out Non ASCII Characters Python

Strip Out Non-ASCII Characters Python

阅读熊猫用 0 替换 nan

Pyspark 替换非 ASCII 字符 Python

  • 在本节中,我们将学习如何在 pyspark python 中替换非 ASCII 字符。
  • 在 Python 中,如果您想使用 Apache Spark 运行应用程序,那么我们将应用 Pyspark 库,例如,如果您正在使用 Python 应用程序处理大数据集,那么 Pyspark 是解决这个问题的最佳方式,它比 Pandas 库更快。
  • 在本例中,我们导入了 Pyspark 模块,首先使用 pyspark.row 库来表示 DataFrame 中的一行数据。现在,我们将使用 spark 上下文和 spark 会话来创建数据帧。

源代码:

from pyspark.sql import Row

from pyspark.context import SparkContext
from pyspark.sql.session import SparkSession
sc = SparkContext('local')
spark = SparkSession(sc)
df = spark.createDataFrame([

    (0, "Pyt¾¿hon Deve¾¿loper"),

    (1, "Jav±²³a Deve±²³loper"),

    (2, "S£¤¥ql Datab£¤¥ase"),

    (3, "Mongodb database")

], ["id", "words"])

from pyspark.sql.functions import udf

def ascii_ignore(x):

    return x.encode('ascii', 'ignore').decode('ascii')

ascii_udf = udf(ascii_ignore)

df.withColumn("foo", ascii_udf('words')).show()

在上面的代码中,我们首先使用 spark.createDataFrame 创建了一个 Dataframe 对象,并在其中分配了非 ASCII 字符。

现在使用 UDF (用户自定义函数),它用于在 Spark 中创建一个可重用的方法。

下面是以下给定代码的执行过程

Pyspark Replace Non ASCII Characters Python

Pyspark Replace Non-ASCII Characters Python

阅读如何用 Python 将 Pandas 数据帧转换成 NumPy 数组

从文本 Python 中删除非 ASCII 字符

  • 在这一节中,我们将学习如何用 Python 从文本中删除非 ASCII 字符。
  • 这里我们可以使用 replace() 方法从字符串中删除非 ASCII 字符。在 Python 中,str.replace()是一个内置函数,这个方法将帮助用户用新的或空的字符串替换旧的字符。

源代码:

new_ele = "England Germanyℜ←↑→China"

new_result = new_ele.replace('ℜ←↑→', '')
print("Removing ascii characters from text : ",new_result)

在上面的代码中,我们首先创建了一个字符串“new_ele ”,然后使用 str.replace() 方法用空格替换特定的非 ASCII 字符。

一旦您打印了‘new _ result’,那么输出将显示删除了所有非 ASCII 字符的新字符串。

下面是以下给定代码的实现

Remove Non ASCII Characters from Text Python

Remove Non-ASCII Characters from Text Python

阅读如何在 Python 数据帧中找到重复项

Python 从字节中删除非 ASCII 字符

  • 在这一节中,我们将学习如何在 Python 中从字节中删除非 ASCII 字符。
  • 让我们看看如何在 encode() 函数中使用字节码从字符串中删除非 ASCII 字符。

源代码:

import re
new_str='Oliva→↓↔↵⇐Elijah'

re.sub(r'[^\x00-\x7f]',r' ',new_str)  

m = new_str.encode('utf8')
z=re.sub(rb'[^\x00-\x7f]',rb' ',m) 
print(z)

下面是以下代码的截图

Python Remove Non ASCII Characters From Bytes

Python Remove Non-ASCII Characters From Bytes

您可能会喜欢以下 Python 教程:

在本教程中,我们学习了如何在 python 中移除非 ASCII 字符。此外,我们已经讨论了这些主题。

  • 移除非 ASCII 字符 Python 熊猫
  • 移除非 ASCII 字符 Python
  • 移除非 ASCII 字符 Python 正则表达式
  • 从 CSV Python 中移除非 ASCII 字符
  • 从文件 Python 中移除非 ASCII 字符
  • 去掉非 ASCII 字符 Python
  • Pyspark 替换非 ASCII 字符 Python
  • 从文本 Python 中移除非 ASCII 字符
  • Python 从字节中删除了非 ASCII 字符

Bijay Kumar MVPBijay Kumar

Python 是美国最流行的语言之一。我从事 Python 工作已经有很长时间了,我在与 Tkinter、Pandas、NumPy、Turtle、Django、Matplotlib、Tensorflow、Scipy、Scikit-Learn 等各种库合作方面拥有专业知识。我有与美国、加拿大、英国、澳大利亚、新西兰等国家的各种客户合作的经验。查看我的个人资料。

enjoysharepoint.com/

在 Python 中从字符串中移除特定字符

原文:https://pythonguides.com/remove-specific-character-from-string-in-python/

Python & Machine Learning training courses

在本 Python 教程中,我们将讨论如何以不同的方式从 Python 中的字符串中移除特定字符。Python 有内置函数,允许您删除字符串中的每个特殊字符。以下是我们将要讨论的话题。

  • 如何使用 isalpha() 函数在 Python 中删除字符串中的特定字符
  • 如何在 Python 中使用正则表达式方法从字符串中移除特定字符
  • 如何使用 isdecimal()函数在 Python 中删除字符串中的特定字符
  • 如何使用 translate 函数在 Python 中移除字符串中的特定字符
  • 如何使用 filter()方法在 Python 中移除字符串中的特定字符
  • 如何使用连接和列表理解方法在 Python 中删除字符串中的特定字符

目录

在 Python 中使用 isalpha()函数从字符串中删除特定字符

  • 如果字符串中的所有字符都是字母或数字, string.isalnum() 方法返回 True 否则,它返回 False。
  • isalnum() 如果字符串包含一个或多个与以下任何组都不匹配的字符,则返回 False。
  • 现在,在这个例子中,我们可以很容易地使用 isalnum() 函数来删除 Python 中一个字符串的所有特定字符。

语法:

让我们看一下语法,理解如何在 Python 中从字符串中删除特定的字符。

str.isalnum()

注意:这个函数不包含任何参数,它总是返回 false 或 true。

举例:

让我们举一个例子,看看如何通过使用 str.isalnum() 方法从 Python 中删除字符串中的特定字符。

**#Input string**
Country_name = "Unit$ed S@tates o!f Amer^ica"

**# By using the str.isalpha() function**
result="".join(m for m in Country_name if m.isalpha())

**# Display the new string**
print (result) 

在上面的例子中,列表中的所有条目都被连接起来,生成一个字符串。加入”功能。这里我们使用输入字符串作为国家名称“Unit$ed S@tates o!f Amer^ica”,现在想要删除输入字符串中所有可用的特定字符。

为此,我们使用了 m.isalpha() 函数,它将从字符串中删除所有特定的字符。

下面是以下给定代码的实现

How to remove a specific character from a string by using the isalpha function

How to remove a specific character from a string by using the isalpha function

这就是我们如何使用 isalpha 函数从字符串中删除特定的字符。

阅读:用 Python 乘法并举例

使用 Python 中的正则表达式从字符串中删除特定字符

  • 为了创建可用于搜索字符串中特殊字符的模式,使用了正则表达式。Python 要求在使用正则表达式之前导入重新打包。
  • 在 Python 中从字符串中移除特殊字符时,会使用该属性。重新打包后,我们可以通过多种方式使用正则表达式。Python 的re sub()方法可以用来消除字符串中的特殊字符。
  • 当我们应用这个函数时,我们可以替换特定的元素,它将替换所有匹配正则表达式的字符。

语法:

让我们看一下语法并理解 Python 中的re sub()方法的工作原理。

re.sub(pattern, repl, string, count=0, flags=0)
  • 它由几个参数组成
    • 模式:该参数定义了我们想要替换的字符串/模式。
    • repl :该参数用于定义替换花样的花样。
    • Count :默认情况下,它取一个 0 值,它定义了应该发生的替换次数。

举例:

让我们举一个例子,看看如何使用 re.sub() 函数从 Python 字符串中删除特殊字符

import re
**# string with special characters** 
Country_name = "U.S.A, Au@st#ralia, Be%lg*iu!m"
print("Input string with specific characters : ",Country_name)

**#By using the re.sub() method** result =re.sub("[@,#,%,!,*]", "", Country_name,count=0)
print("Input string after removing the special characters : ",result)

因此,我们将首先导入 re 库来验证 re 模块中的函数,然后,我们生成一个字符串,输入字符串是 Country_name,在该字符串中我们将国家名称分配给它" U . s . a,Au@st#ralia,Be%lg*iu!m"

现在我们想从字符串中删除特殊字符,为此我们将在re sub()函数中创建一个特殊字符列表。

然后执行re()命令,并在其中传递参数字符串和计数。这里,我们利用表达式“计数= 1”来表示字符删除。

下面是以下给定代码的实现。

How to remove a specific character from a string by using the regular expression method

How to remove a specific character from a string by using the regular expression method

正如你在截图中看到的,我们已经讨论了如何使用正则表达式方法从字符串中删除特定的字符。

阅读:解析 Python 时意外的 EOF

如何使用 isdecimal() 在 Python 中移除字符串中的特定字符

  • 在本节中,我们将讨论如何使用 isdecimal() 函数从字符串中删除特定字符。
  • 如果字符串中的每个字符都是十进制字符,则 isdecimal() 方法返回 True。如果不是,则返回 False。十进制字符是那些基数为 10 的字符。

语法:

下面是 Python 中 isdecimal() 函数的语法

isdecimal() 

注意:这个函数不包含任何参数,它总是返回 false 或 true。

举例:

让我们举一个例子,看看如何使用 isdecimal() 函数从字符串中删除特定的字符。

源代码:

**# input string**
new_string ="4@1$#4%5^"

**# By using the str.isdecimal() function**
new_output="".join(i for i in new_string if  i.isdecimal())

**# Display the new_string**
print ("Special characters removed from strings:",new_output)

在下面给出的代码中,我们首先导入输入字符串,然后使用 str.isdecimal() 函数。它遍历字符串,确定每个字符是否是数字,如果是,则返回该字符。

你可以参考下面的截图。

How to remove a specific character from a string by using the isdecimal function

How to remove a specific character from a string by using the isdecimal function

这是如何使用 Python 中的 isdecimal 函数从字符串中删除特定字符。

阅读: Python 对于基数为 10 的 int()无效文字

使用 translate() 在 Python 中删除字符串中的特定字符

  • 在这里,我们将了解如何使用 Python 中的 translate 函数从字符串中删除特定字符。
  • 要从结果字符串中删除一个字符,我们必须给出该字符的 Unicode 码位和单词“None”作为替换。为了确定字符的 Unicode 码位,我们可以利用 ord() 方法。

语法:

下面是 Python 中 string.translate() 函数的语法。

string.translate(table)

注意:该参数只取一个参数,定义一个存储两个字符之间映射的翻译表。

举例:

让我们举一个例子,看看如何使用 translate() 方法从 Python 中删除字符串中的特定字符

import string as st
**# Input string**
cities_of_USA = 'New@York, Los#Angeles, Cal$ifornia, Hou*ston, San&Jose'

**# Creating list of special characters**
list_of_specific_char=['@','#','$','*','&']

**# Display the input**
print("Input string : ",cities_of_USA )
new_trans = {special_char: '' for special_char in st.punctuation}

**# By using the maketrans()**
result = str.maketrans(new_trans)
new_str = cities_of_USA .translate(result)
print("Specific characters removed from string : ",new_str)

在上面的例子中,我们创建了一个名为 'cities_of_USA' 的输入字符串,在这个字符串中,我们指定了位于美国的城市名称。

现在我们必须从字符串中删除特殊字符,为此,我们使用了事务和标点()函数。

包含所有特殊字符的字符串称为 string .标点() 。利用这一点,生成一个以特殊字符为键,以空值为值的字典。

下面是以下给定代码的实现

How to remove a specific character from a string by using the translate function

How to remove a specific character from a string by using the translate function

在这个例子中,我们已经了解了如何使用 translate 函数从字符串中删除特定的字符。

阅读: Python 检查变量是否为整数

如何使用 filter()方法在 Python 中删除字符串中的特定字符

  • 在本节中,我们将讨论如何使用 Python 中的 filter() 方法从字符串中删除特定字符。
  • str.isalpha 方法将被 filter() 函数应用于字符串中的每一个元素,如果返回 True,将返回该元素。如果不是,它将忽略该项目。
  • 过滤器()返回一个包含字符串中所有字母的迭代器后,join () 函数将用一个空字符串连接迭代器中的所有元素。

举例:

让我们举一个例子,看看如何使用 filter() 方法从字符串中删除特定的字符

**# Input string**
Bikes_in_USA = 'Ap@ril#ia, Ka$was%aki, Du&ca!ti'

**# By using the filter and isalpha() method**
new_var=filter(str.isalpha,Bikes_in_USA)
result="".join(new_var)
print ("Remove specific characters from string :",result)

在下面的代码中,我们首先创建了输入字符串 Bikes_in_USA = 'Ap@ril#ia,Ka$was%aki,Du & ca!然后使用了过滤器()函数,在这个函数中,我们传递了 str.isalpha 作为参数。

你可以参考下面的截图

How to remove a specific character from a string by using the filter method

How to remove a specific character from a string by using the filter method

这就是我们如何使用 Python 中的 filter 方法从字符串中删除特定字符。

读取:检查一个数字是否是质数

使用连接和列表理解方法从 Python 中的字符串中删除特定字符

  • 在这个例子中,我们将讨论如何通过使用 python 中的连接和列表理解方法从 Python 中的字符串中删除特定字符。
  • 通过使用 list comprehension 和 join 方法,我们可以很容易地将每个 string 元素拆分成相关的 list 元素,然后将它们连接起来以声明一个新的 string。

举例:

让我们举一个例子,看看如何使用 python 中的连接和列表理解方法从字符串中删除特定的字符。

源代码:

**# Input String**
Cars_in_USA = "Te@sla, Toyota, Ford"
print("Input string:",Cars_in_USA)
 **# By using the join() method** 
output = ''.join([Cars_in_USA [i] for i in range(len(Cars_in_USA )) if i != 2]) 

**# Display the Content  ** 
print ("First character remove from string: ",output) 

下面是以下给定代码的实现

How to remove a specific character from a string by using the join and list comprehension method in python

How to remove a specific character from a string by using the join and list comprehension method in python

另外,看看更多的 Python 教程。

在本文中,我们已经讨论了如何以不同的方式从 Python 的字符串中删除特定的字符。我们还介绍了一些不同的方法,允许你从字符串中删除每个特殊字符。

  • 如何使用 isalpha() 函数在 Python 中删除字符串中的特定字符
  • 如何在 Python 中使用正则表达式方法从字符串中移除特定字符
  • 如何使用 isdecimal()函数在 Python 中删除字符串中的特定字符
  • 如何使用 translate 函数在 Python 中移除字符串中的特定字符
  • 如何使用 filter()方法在 Python 中移除字符串中的特定字符
  • 如何使用连接和列表理解方法在 Python 中删除字符串中的特定字符

Machine Learning From Basic to AdvancedArvind

Arvind 目前是 TSInfo Technologies 的高级 Python 开发人员。他精通 Python 库,如 NumPy 和 Tensorflow。

如何在 Python 中删除字符串的最后一个字符

原文:https://pythonguides.com/remove-the-last-character-from-a-string-in-python/

Python & Machine Learning training courses

在本 Python 教程中,我们将讨论如何在 Python 中移除一个字符串的最后一个字符。此外,我们将演示七种有趣的技术来删除 Python 中字符串的最后一个字符。

  • 如何在 Python 中删除字符串的最后一个字符
  • 如何使用切片方法从 Python 中移除字符串的最后一个字符
  • 如何使用 translate 方法在 Python 中移除字符串的最后一个字符
  • 如何使用 rstrip 方法在 Python 中移除字符串的最后一个字符
  • 如何使用 regex 方法从 Python 中删除字符串的最后一个字符
  • 如何使用 for 循环概念在 Python 中删除字符串的最后一个字符
  • 如何使用连接和列表理解方法在 Python 中删除字符串的最后一个字符
  • 如何使用 replace()方法在 Python 中移除字符串的最后一个字符
  • 如何从字符串 Python NumPy 中删除最后一个字符

目录

如何使用切片方法从 Python 中删除字符串的最后一个字符

  • 在这里,我们将尝试理解如何使用切片方法从 Python 中删除字符串的最后一个字符。
  • 字符串切片是一种从字符串中删除最后一个字符的 Python 技术。您可以通过使用字符串切片函数获得一个子字符串。为了从字符串中提取某些字符,使用了索引。
  • 在这个例子中,我们将通过切片使用负索引来删除字符串中的最后一个字符。

语法:

str[:-1]

举例:

让我们看一个例子来帮助你更好地理解这个概念。

**# Input string**
Country_name = " The United States of America"
print("Input string: ", Country_name)

**# By using the slicing negative index**
result = Country_name[:-1]

**# Display the Content**
print("Last character has been removed from string: ", result)

这里我们取了一个输入字符串Country _ name = " United States of America ",然后为了删除字符串中的最后一个字符,索引从 -1 开始。

我们通过在-1 索引处对字符串进行切片,删除了它的最后一个字符。最后,结果已经打印出来。因此,我们可以看到最后一个字符已被删除。

你可以参考下面的截图。

How to remove the last character from a string in Python by using the slicing method

How to remove the last character from a string in Python by using the slicing method

阅读:如何将列表追加到另一个列表中

如何使用 translate 方法删除 Python 中字符串的最后一个字符

  • 在这个例子中,我们将讨论如何使用 translate 方法从 Python 字符串中删除最后一个字符。
  • Python 的 translate() 函数用于返回一个字符串,字符串中的每个字符都被映射到翻译表中相应的位置。
  • 要从结果字符串中删除一个字符,我们必须给出该字符的 Unicode 码位和单词“None”作为替换。为了确定字符的 Unicode 码位,我们可以利用 ord() 方法。

举例:

**# Input string**
cities_of_USA = 'New York, Los Angeles, California'
print("Input string:",cities_of_USA)

**# Using the translate() method**
new_output= cities_of_USA.translate({ord('a'): None})

**# Display the Content**
print("Last character removed: ", new_output)

下面是以下给定代码的实现

How to remove the last character from a string in Python by using the translate method

How to remove the last character from a string in Python by using the translate method

在这个例子中,我们讨论了如何使用 translate 方法从 Python 中删除字符串的最后一个字符。

阅读:如何在 Python 中使用 For 循环对列表中的元素求和

如何使用 rstrip 方法从 Python 中删除字符串的最后一个字符

  • 使用字符串函数 rstrip 移除给定字符串右侧的字符。因此,我们将使用它来删除字符串的最后一个字符。
  • 方法从提供的后续字符中去掉字符串的最后几个字符。如果没有提供参数,它将删除末尾的空格。

语法:

让我们看一下语法并理解 Python 中的rst rip()方法的工作原理。

string.rstrip(chars)

注意:它只有一个参数,表示要删除的尾部字符。

示例:

new_val = input("Enter the Country name : ")

new_output = new_val.rstrip(new_val[-1])

print("Last character removed from String : ",new_output)

你可以参考下面的截图

How to remove the last character from a string in Python by using the rstrip method

How to remove the last character from a string in Python by using the rstrip method

这是如何使用 rstrip 方法从 Python 中移除字符串的最后一个字符。

阅读:如何在 Python 中求完全数

如何使用 regex 方法删除 Python 中字符串的最后一个字符

  • Regex()是一个 Python 函数,可用于匹配字符串中的两个组。regex 模块的' re '类具有函数re sub()。最后一个字符也可以用它来删除。
  • Re.sub()是 Python regex 提供的一种方法,用于搜索和替换字符串中的模式。通过使用这种技术,我们可以用不同的字符串替换目标字符串中的一个或多个正则表达式模式实例。

语法:

让我们看一下语法并理解 Python 中的re sub()方法的工作原理。

re.sub(pattern, repl, string, count=0, flags=0)
  • 它由几个参数组成
    • 模式:该参数定义了我们想要替换的字符串/模式。
    • repl :该参数用于定义替换花样的花样。
    • Count :默认情况下,取值为 0,它定义了应该发生的替换次数。

举例:

为了更好地理解这个想法,让我们看一个例子。

源代码:

import re
# input string
Country_name = "U.S.A, France, Belgium"

# By using the re.sub() method
new_output = re.sub(r'm', '', Country_name, count = 1)

# Display the content
print("Removed last character from input string: ",new_output)

因此,我们将首先导入 re 库来验证这个函数,它在 re 模块中,然后,我们生成一个字符串。

然后执行re()命令,并在其中传递参数字符串和计数。这里,我们利用表达式“count = 1”来表示字符删除,在这个函数中,我们传递了想要从输入字符串中删除的字母。

下面是以下给定代码的实现。

How to remove the last character from a string in Python by using the regex method

How to remove the last character from a string in Python by using the regex method

正如你在截图中看到的,我们已经讨论了如何使用 regex 方法从 Python 中删除字符串的最后一个字符。

阅读:如何在 Python 中反转一个数字

如何使用 for 循环概念从 Python 中删除字符串的最后一个字符

  • 字符串中的最后一个字符也可以使用 for 循环删除。函数 len() 将用于提取字符串的长度。
  • 接下来,将生成一个空字符串。之后,我们将通过从 0 到 l-2 的循环迭代将字符串追加到空字符串。
  • 输出将作为最终的字符串打印出来。

举例:

让我们举一个例子,看看如何在 Python 中删除字符串的最后一个字符。

源代码:

# Input string
Companies_in_USA = "Walmart, Amazon, Apple"
print("Input string: ",Companies_in_USA )

# Calculate string length
new_length = len(Companies_in_USA)

#empty string
new_string = ""

# By using for-loop
for i in range(0,new_length-1):
    new_string = new_string + Companies_in_USA[i]

print("Remove last Character : ",new_string)

在本例中,我们首先获取输入字符串Companies _ in _ USA=“Walmart,Amazon,Apple ”,然后我们使用 len()函数来确定字符串的长度。

为了创建新的字符串,我们采用了一个空字符串,并将其附加到现有的字符串。接下来,我们将空字符串中的字符添加到 for 循环的每次迭代中,我们使用它从索引 0 到 new_length-1

我们最终打印出了创建好的字符串,它将显示从输入字符串中删除的最后一个字符。

下面是以下给定代码的实现。

How to remove the last character from a string in Python by using the for loop concept

How to remove the last character from a string in Python by using the for loop concept

这是如何使用 for 循环概念从 Python 中删除字符串的最后一个字符。

阅读: Python 程序求偶或奇

如何使用连接和列表理解方法从 Python 中删除字符串的最后一个字符

  • 这里我们将讨论如何通过使用 python 中的连接和列表理解方法来删除 Python 中字符串的最后一个字符。
  • 通过使用 list comprehension 和 join 方法,我们可以很容易地将每个 string 元素拆分成相关的 list 元素,然后将它们连接起来以声明一个新的 string。

举例:

这里我们将举一个例子,检查如何通过使用 python 中的****连接和列表理解方法从 Python 中删除字符串的最后一个字符。

****源代码**:

# Input string
state_name_in_USA = 'Alaska'
print ("Original string: ", state_name_in_USA)

# By using the join() method 
new_result = ''.join([state_name_in_USA [m] for m in range(len(state_name_in_USA )) if m != 5]) 

# Display the Content   
print ("Last character remove from string: ",new_result) 

在下面给出的代码中,我们首先创建了一个名为“state _ name _ in _ USA”的输入字符串,并在其中为其指定了州名。接下来,我们使用了 join() 方法并用一个设定的条件迭代这些值,如果 i!=5 ,它将删除字符串中的最后一个字符。

下面是以下代码的截图

How to remove the last character from a string in Python by using the join and list comprehension method in python

How to remove the last character from a string in Python by using the join and list comprehension method in python

正如你在截图中看到的,我们已经讨论了如何使用连接和列表理解方法从 Python 中删除字符串的最后一个字符。

阅读:Python 中的复数

如何使用 replace()方法从 Python 中删除字符串的最后一个字符

  • 在这个例子中,我们将了解如何通过使用 Python 中的 replace() 方法来删除 Python 中字符串的最后一个字符。
  • Python 中一个名为 replace() 的内置函数通过用一个子字符串替换另一个子字符串来创建一个新字符串。
  • 在本例中,如果我们想从输入字符串中删除最后一个字符,那么我们必须提供第二个参数作为空字符串“”。

语法:

让我们看一下语法并理解 Python 中的 str.replace() 方法的工作原理。

str.replace(old,  new, count)
  • 它由几个参数组成
    • old :-该参数定义了将要被替换的字符串。
    • new :用新值(一个字符或字符串)替换现有值。
    • count :-一个整数值,表示要用新字符或子串替换多少个旧字符或子串。这是一个可选参数。

举例:

# Input string
Cars_in_USA = 'Tesla, BMW'

# By Using replace() method
new_output= Cars_in_USA.replace('W', '')

# Display the content
print("Last character has been removed from string: ",new_output)

在下面给定的代码中,我们使用了 str.replace() 函数,在这个方法中,我们提供了旧字符‘W’,并用一个新字符替换了它,但是在这种情况下,我们必须删除这个字符,所以第二个参数将是一个空字符串。

你可以参考下面的截图

How to remove the last character from a string in Python by using the replace method in Python

How to remove the last character from a string in Python by using the replace method in Python

在这个例子中,我们已经了解了如何通过使用 Python 中的 replace 方法来删除 Python 中字符串的最后一个字符。

阅读: Python 回文程序

如何删除字符串 Python NumPy 的最后一个字符

  • 在这一节中,我们将讨论如何在 NumPy Python 中删除字符串的最后一个字符。
  • 为了执行这个特定的任务,我们将使用 numpy.char.replace() 函数。在每个实例中,旧的子串被新的子串替换后, replace() 函数返回一个字符串或字符串数组的副本。
  • 当您想要用新的字符串值替换数组元素中的子字符串时,这个函数非常有用。

语法:

下面是 Python 中 numpy.char.replace() 函数的语法

numpy.char.replace(a, old, new, count=None)
  • 它由几个参数组成
    • a :这个参数定义了我们插入字符串元素的输入数组。
    • old :要替换的原始子串由该参数指定。
    • new :该参数定义用来替换旧子串的新子串。

举例:

import numpy as np

# Creation of input array
Country_name = np.array([" The United States of America"])

# Create old character
old = "a"

# creating a new character
new = " "

# By using the char.replace() function
new_result = np.char.replace(Country_name, old, new)
print("last character removed from array: ",new_result)

下面是以下代码的截图

How to remove the last character from the string Python NumPy

How to remove the last character from the string Python NumPy

您可能也喜欢阅读以下 Python 教程。

在本教程中,我们讨论了如何在 Python 中删除一个字符串的最后一个字符,我们还应用了不同的技术来删除 Python 中一个字符串的最后一个字符。

  • 如何在 Python 中删除字符串的最后一个字符
  • 如何使用切片方法从 Python 中移除字符串的最后一个字符
  • 如何使用 translate 方法在 Python 中移除字符串的最后一个字符
  • 如何使用 rstrip 方法在 Python 中移除字符串的最后一个字符
  • 如何使用 regex 方法从 Python 中删除字符串的最后一个字符
  • 如何使用 for 循环概念在 Python 中删除字符串的最后一个字符
  • 如何使用连接和列表理解方法在 Python 中删除字符串的最后一个字符
  • 如何使用 replace()方法在 Python 中移除字符串的最后一个字符
  • 如何从字符串 Python NumPy 中删除最后一个字符

Machine Learning From Basic to AdvancedArvind

Arvind 目前是 TSInfo Technologies 的高级 Python 开发人员。他精通 Python 库,如 NumPy 和 Tensorflow。**

移除 python 中的 Unicode 字符

原文:https://pythonguides.com/remove-unicode-characters-in-python/

Python & Machine Learning training courses

在本 Python 教程中,我们将讨论如何移除 python 中的 unicode 字符。此外,我们还将讨论:

  • 从字符串 python 中移除 Unicode 字符
  • Python 从字符串中删除了 Unicode“u”
  • 移除 python 字符串中的特殊字符
  • 移除 python 中的非 ASCII 字符

目录

从字符串中删除 python 中的 Unicode 字符

在 python 中,要从字符串 python 中删除 Unicode 字符,我们需要使用 str.encode() 对字符串进行编码,以便从字符串中删除 Unicode 字符。

举例:

string_unicode = " Python is easy \u200c to learn. "
string_encode = string_unicode.encode("ascii", "ignore")
string_decode = string_encode.decode()
print(string_decode)

写完上面的代码后(从字符串 python 中删除 Unicode 字符),你将打印出 " string_decode " ,然后输出将显示为 " Python 很容易学。"。这里,encode()用于从字符串中移除 Unicode。你可以参考下面的截图来移除字符串 python 中的 Unicode 字符。

Remove Unicode characters in python

remove unicode characters python

Python 从字符串中移除 Unicode“u”

在 python 中,要从字符串中删除 Unicode " u " 字符,我们可以使用 replace()方法从字符串中删除 Unicode " u"。

举例:

string = "u\'Python is easy'"
string_unicode = string.replace("u'", "'")
print(string_unicode)

写完上面的代码后(python 从一个字符串中删除 Unicode“u”),你将打印出“string _ Unicode”,然后输出将显示为“Python 很简单。”。这里,它从字符串中删除了 Unicode 码“u”。从 string python 中移除 Unicode " u " 可以参考下面的截图。

Python remove Unicode " u " from string

remove unicode characters python

我们也可以,do python 通过使用 encode() 从字符串中移除 Unicode“u”字符,这里的“u”是用别的东西移除的 Unicode。

举例:

string = u'hello world!'
string_encode = string.encode('ascii')
print(string_encode)

写完上面的代码后(python 从字符串中删除了 Unicode“u”字符),您将打印出“string _ encode”,然后输出将显示为“b ' hello world!”。这里,它用别的东西从字符串中删除了 Unicode 字符“u”。你可以参考下面的截图来移除字符串 python 中的 Unicode " u " 字符。

Python remove Unicode " u " character from a string

Python remove Unicode “u” character from a string

这是怎么做到的,我们可以从字符串 **中 ****去除 Unicode“u”字符。**

阅读:用 Python 把 PDF 文件转换成 Docx

删除 python 字符串中的特殊字符

在 python 中,为了删除 python 字符串中的特殊字符,我们使用 isalnum()从字符串中删除特殊字符。特殊字符可以是空格、标点符号或斜线。

举例:

my_string = "sgr /k !? 100002"
string = ""
for character in my_string:
if character.isalnum():
string = string + character
print(string)

写完上面的代码后(去掉 python 字符串中的特殊字符),您将打印出 " string" ,然后输出将显示为 " sgrk100002 " 。在这里,它从字符串中删除特殊字符,并返回一个包含字母和数字的字符串,循环将遍历每个字符。你可以参考下面的截图来移除 python 字符串中的特殊字符。

Remove special characters in python string

Remove special characters in python string

这就是我们如何能够删除 python 字符串中的特殊字符。

删除 python 中的非 ASCII 字符

在 python 中,要去除 python 中的非 ASCII 字符,我们需要使用 string.encode() ,编码为 ASCII ,错误为 ignore ,返回一个没有 ASCII 字符的字符串使用 string.decode()

举例:

string_nonASCII = " àa fuünny charactersß. "
string_encode = string_nonASCII.encode("ascii", "ignore")
string_decode = string_encode.decode()
print(string_decode)

写完上面的代码(去掉 python 中的非 ASCII 字符),你将打印出 " string_decode " ,然后输出将显示为"一个有趣的字符。"。这里,encode()用于从字符串中删除非 ASCII 字符,而 decode() 将对字符串进行编码。你可以参考下面的截图来移除 python 中的非 ASCII 字符。

Remove non-ASCII characters in python

Remove non-ASCII characters in python

这就是我们如何在 python 中移除 非 ASCII 字符。

您可能会喜欢以下 Python 教程:

在本教程中,我们已经讨论了如何在 python 中移除 Unicode 字符。我们用 Python 中的例子讨论了如何移除 Unicode 字符

Bijay Kumar MVPBijay Kumar

Python 是美国最流行的语言之一。我从事 Python 工作已经有很长时间了,我在与 Tkinter、Pandas、NumPy、Turtle、Django、Matplotlib、Tensorflow、Scipy、Scikit-Learn 等各种库合作方面拥有专业知识。我有与美国、加拿大、英国、澳大利亚、新西兰等国家的各种客户合作的经验。查看我的个人资料。

enjoysharepoint.com/

Replit 蟒蛇龟

原文:https://pythonguides.com/replit-python-turtle/

Python & Machine Learning training courses

在本巨蟒龟教程中,我们将学习如何使用 Replit 巨蟒龟,我们还将介绍与 Replit 龟相关的不同示例。我们将讨论这些话题。

  • Replit 蟒蛇龟
  • Replit Python 海龟馆

目录

Replit 蟒蛇龟

在这一节中,我们将学习 Python Turtle 中的 Replit 。Replit 是一个编码平台,我们可以在这里写代码,做项目。在这里,我们可以借助 Replit 托管应用程序。

它有不同的使用方式,可以用以下方式代替:

  • 代码编辑器(相对于代码、子行)
  • 像 NPM 一样建造工具
  • 云服务提供商(AWS、Netlify)
  • 社区协作工具(谷歌、Github)

代码:

我们从 turtle import * 、导入 turtle 模块作为 turn

  • tur.pensize(8) 用于增加或减少线条的粗细。
  • tur.circle(100) 用于在屏幕上画圆。
from turtle import *
import turtle as tur

tur.pensize(8)
tur.circle(100)
tur.circle(50)
tur.done()

输出:

运行上述代码后,我们可以看到下面的输出,这是使用 Replit 中的 pensize()circle() 函数完成的。

Replit python turtle

Replit python turtle Output

阅读:蟒龟大小

Replit 蟒蛇龟屋

在这一节中,我们将学习如何用 Python 构建一个 Replit turtle house。

正如我们所知,replit 是一个编码平台,我们可以编写代码并执行它,甚至我们可以将应用程序托管到该平台上。在这里,我们编写了一个可以在 replit 上执行的代码,并在浏览器上托管该应用程序。

代码:

在下面的代码中,我们导入了 turtle 模块,它有助于绘制图片。

  • 速度(0) 用来给乌龟速度, 0 是最快的速度。
  • color() 用于给图像着色,以获得吸引人的外观。
  • forward() 是在龟笔上移动做出形状的方向函数。
  • left() 是在龟笔上移动做出形状的方向函数。
  • right() 是在龟笔上移动做出形状的方向函数。
 from turtle import *
import turtle

speed(0)

color('brown')
forward(350)

left(90)	
forward(100)

color("alice blue")		
begin_fill()
forward(250)

left(90)	
forward(490)

left(90)			
forward(250)

left(90)
forward(491)
end_fill()

color("brown")	
right(90)
forward(100)
right(90)
forward(630)

penup()
left(180)
forward(180)
left(90)
forward(45)

color("dark green") 
begin_fill()
right(385)

forward(170)

right(130)
forward(170)

right(115)
forward(82)
end_fill() 

penup()	
color("brown")
right(180)
forward(30)

pendown()
begin_fill()
right(90)
forward(45)

right(90)
forward(45)

right(90)
forward(45)

right(90)
forward(45)
end_fill() 

penup()
right(90)
forward(45)

right(90)
forward(45)

#pendown()
color("brown")
forward(110)

color("brown")
right(90)
forward(105)
color("blue")
forward(105)

color("blue")
right(90)
forward(300)

right(180) 

pendown()

circle(30,50)
right(90)
circle(30,50)

penup()
left(170)
forward(200)

pendown()           
color("yellow")
begin_fill()
circle(60) 
end_fill()

penup()
color("blue")
right(90)

forward(206)

right(90)
forward(125)

pendown() 
color("black")		
begin_fill()
forward(25)

right(90) 
forward(40)
right(90)
forward(25)
right(90)
forward(40)

end_fill()

color("red")     

left(90)
forward(50)

left(90)
forward(100)
left(90)
forward(125)
left(90)
forward(100)

left(90)
forward(50)

right(180)
forward(50)

right(90)
forward(100)

right(45)	
forward(90)

right(90)
forward(90)

right(45)

penup()
forward(100)
right(90)
turtle.done()

输出:

在上面的代码中,我们使用 python turtle 模块和 forward()right() color()left() 函数,用 python turtlepen 制作了一张房子的图片。

在 Replit 中,我们可以在任何地方都能访问的服务器上托管我们的应用和运行我们的代码。

链接:在这个链接中,我们可以看到我们的代码是如何在 Replit 平台上工作的,我们可以访问它来查看输出。

Replit Python turtle house

Replit Python turtle house Output

你可能也喜欢读下面的文章。

因此,在本教程中,我们讨论了 Replit Python Turtle ,我们还讨论了与其实现相关的不同示例。这是我们已经讨论过的例子列表。

  • Replit 蟒蛇龟
  • Replit Python 海龟馆

Bijay Kumar MVPBijay Kumar

Python 是美国最流行的语言之一。我从事 Python 工作已经有很长时间了,我在与 Tkinter、Pandas、NumPy、Turtle、Django、Matplotlib、Tensorflow、Scipy、Scikit-Learn 等各种库合作方面拥有专业知识。我有与美国、加拿大、英国、澳大利亚、新西兰等国家的各种客户合作的经验。查看我的个人资料。

enjoysharepoint.com/

如何在 Python 中反转列表

原文:https://pythonguides.com/reverse-a-list-in-python/

Python & Machine Learning training courses

在本 Python 教程中,我们将学习如何在 python 中反转一个列表。我们将讨论与反转列表相关的不同例子。这是我们将要涉及的例子列表。

  • 用反转函数反转 python 中的列表
  • 用反向迭代器反转 python 中的列表
  • 在 python 中不使用反转函数反转列表
  • 如何在 python 中使用 while 循环反转列表
  • 使用 for 循环反转 python 中的列表
  • 使用切片反转 python 中的列表
  • 使用递归在 python 中反转列表

目录

用反转函数反转 python 中的列表

Python 有一个名为 reverse() 的内置函数,我们可以用它来反转一个 Python 列表。让我们看一个例子。我们将创建一个列表,并使用 reverse() 函数来反转它。看看下面的代码。

list1=[12,14,56,24,25,52,54]
list1.reverse()
print(list1)
  • 我们创建了一个名为 list1 的列表,并使用 reverse()函数来反转列表。查看下面的输出:

Reverse a list in python with reverse function

Reversed list

这样,就可以使用内置的 reverse()函数来反转一个列表。

阅读: Python 程序反转一个字符串

用反向迭代器反转 python 中的列表

python 中还有另一个内置选项来反转列表。我们可以使用反向迭代器。使用这个选项,我们可以以相反的顺序迭代我们的列表,或者我们也可以以列表的形式存储结果。让我们看看如何。

list1= [23, 54, 76, 82, 40, 45]
for element in reversed(list1):
    print(element)

Reverse a list in python with reverse function

Elements printed in reverse order

您可以看到元素是以相反的顺序打印的。

同样,你可以用这个反向迭代器来做一个列表。但是你必须把这个迭代器对象转换成一个列表。

list1= [23, 54, 76, 82, 40, 45]
print(list(reversed(list1)))

Reverse a list in python

Reversed List

这样,你就可以使用反向迭代器在 python 中得到一个反向列表。

阅读: 11 Python 列表方法

在 python 中不用反转函数反转一个列表

当我们想在 python 中反转一个列表时,一般会使用 reverse() 函数。但是我们也可以编写自己的逻辑来完成同样的任务。

在下面几节中,我解释了一些不用 reverse() 函数就可以在 python 中反转列表的方法。

如何使用 while 循环反转 python 中的列表

在 python 中,可以使用 while 循环来反转列表。看看下面的代码:

list1= [54,78,23,54,67,90,12,43]
print('Original list:', list1)
list2=[]
length=len(list1)
while length > 0:
    list2.append(list1[length-1])
    length = length - 1
print('Reversed list:', list2)

reverse a list in python using while loop

Reversed list

  • 在上面的代码中,我们迭代了列表的长度。我们递减长度的值,当长度为零时,循环将停止。
  • 在索引的帮助下,我们将原始列表的值存储到一个新列表中。

这样,您可以使用 while 循环来反转 python 中的列表。

阅读: Python 将数据帧转换为列表

使用 for 循环反转 python 中的列表

还可以使用 for 循环来反转 python 中的列表。我将解释使用 for 循环反转列表的各种例子。

例 1:

考虑以下 python 代码:

original_list=[71, 36, 51, 75, 82, 78, 40]
print('Orginal List:', original_list)
reversed_list=[]
for i in original_list:
    reversed_list.insert(0,i)
print('Reversed List:', reversed_list)

Reverse a list in python using for loop

Reversed List

  • 在上面的例子中,我们使用了 insert() 函数在新列表的第一个位置插入一个元素。

  • 当我们在列表中的第一个索引处插入一个元素时,其余的元素被转移到下一个索引处。

  • 例如,以下是每次迭代后反转列表的值:

    • [71]
    • [36, 71]
    • [51, 36, 71]
    • [75, 51, 36, 71]
    • [82, 75, 51, 36, 71]
    • [78, 82, 75, 51, 36, 71]
    • [40, 78, 82, 75, 51, 36, 71]
  • 你可以看到,在所有迭代结束时,我们的列表是颠倒的。

现在让我们看另一个使用 for 循环反转列表的例子。

例 2:

在这个例子中,我们将使用列表的 insert() 函数和 pop() 方法来反转列表。pop()方法删除列表的最后一个元素,并返回这个被删除的值,我们可以将它存储到一个变量中。

这一次,我们不会创建一个新的列表,而只会反转现有列表中的元素。

original_list=[71, 36, 51, 75, 82, 78, 40]
print('Orginal List:', original_list)
for i in range(len(original_list)):
    popped= original_list.pop()
    original_list.insert(i, popped)
print('Reversed List:', original_list)

Reverse a list in python

Reversed List

  • 我们使用 pop()方法删除最后一个元素,并将这个删除的元素存储到一个变量中。
  • 然后我们使用 insert()函数在列表中插入弹出的元素。
  • 为了更好地理解它,您可以在每次迭代后看到列表的值:
    • [71, 36, 51, 75, 82, 78, 40]
    • [40, 71, 36, 51, 75, 82, 78]
    • [40, 78, 71, 36, 51, 75, 82]
    • [40, 78, 82, 71, 36, 51, 75]
    • [40, 78, 82, 75, 71, 36, 51]
    • [40, 78, 82, 75, 51, 71, 36]
    • [40, 78, 82, 75, 51, 36, 71]
    • [40, 78, 82, 75, 51, 36, 71]

因此,您可能已经学会了如何在 for 循环中使用 pop()和 insert()函数来反转列表。

例 3 :

在这个例子中,我将解释一种不使用内置函数的非常有效的反转列表的方法。看看下面的代码;

list1 = [32, 65, 79, 45, 35, 62, 74]
print('Original List:', list1)
Length = len(list1)
for i in range(int(Length / 2)):
    temp = list1[i]
    list1[i] = list1[Length - i - 1]
    list1[Length - i - 1] = temp
print('Reversed List:', list1)

Reverse a list in python without reverse function

Reversed List

  • 在上面的代码中,循环将运行列表中一半数量的元素。
  • 这意味着运行该程序的时间复杂度将低于其他一些方法,使其成为一个非常有效的解决方案。

代码的解释 :

  • 在上面的程序中,我们试图在一个循环内将左侧的一个元素与右侧的相应元素交换。
  • 使用这个逻辑,我们只需要运行这个程序列表中元素总数的一半。
  • 让我一个一个给你看迭代:

原列表:【32,65,79,45,35,62,74】

列表长度: 7

迭代次数: int(7/2) = 3

迭代 1:

[74, 65, 79, 45, 35, 62, 32]

迭代 2:

[74, 62, 79, 45, 35, 65, 32]

迭代 3:

[74, 62, 35, 45, 79, 65, 32]

你可以看到在最后一次迭代中,我们颠倒了我们的列表。通过这种方式,您可以使用 for 循环以非常高效的方式来反转 python 中的列表。

例 4:

下面的例子只是为了实践,并不是一个可行的解决方案,因为它有很高的空间和时间复杂度。

在这个方法中,我们迭代原始列表元素。我们将每个元素转换成一个列表,并将它与最初为空的新列表连接起来。

original_list=[71, 36, 51, 75, 82, 78, 40]
print('Original List:', original_list) 
reversed_list=[]
for element in original_list:
    reversed_list= [element] + reversed_list
print('Reversed List:', reversed_list)

Reverse a list in python

Reversed List

阅读: Python 字符串列表

使用切片反转 python 中的列表

在本节中,您将学习如何使用切片方法来反转列表。在这个方法中,我们必须制作一个新的列表副本。这增加了程序的空间需求。

看看下面的代码:

list1=[44, 75, 24, 78, 24, 84, 24]
print('Original List', list1)
new_list=list1[::-1]
print('Reversed List', new_list)

Reverse a list in python using slicing

Reversed List

您可以看到列表的副本以相反的顺序存储元素。这样,您可以使用切片或索引方法来获得逆序列表。

阅读: Python 从两个列表中创建了一个字典

使用递归在 python 中反转列表

在 python 中,还可以使用一些递归方法来反转列表。让我们借助一个例子来理解。

list1= [43, 56, 23, 75, 92, 34, 45]
print('Original list:', list1)
def rev(lst):
    if len(lst) == 0:
        return []
    return [lst[-1]] + rev(lst[:-1])
print('Reversed list:', rev(list1))

Reverse a list in python using recursion

Reversing a list using recursion

  • 在上面的代码中,我们创建了一个递归函数。
  • 这个函数返回列表的最后一个元素,并将它转换成一个列表。
  • 然后这个函数使用连接操作符并再次调用自己,但是这次传递的列表不包括列表的最后一个元素。
  • 因此,该函数将递归地返回从最后一个位置到第一个位置的所有元素,并在最后一次迭代中连接它们。
  • 这将返回一个逆序的列表。

让我形象地解释一下:

原始列表:版本([43,56,23,75,92,34,45])

迭代 1:

现在这个函数将分解为:

[45] + rev([43,56,23,75,92,34])

迭代 2:

类似地,该函数将再次分解为:

[45] + [34] + rev([43,56,23,75,92])

迭代 3:

[45] + [34] + [92] + rev([43,56,23,75])

第四次迭代:

[45] + [34] + [92] + [75] + rev([43,56,23])

迭代 5:

[45]+[34]+[92]+[75]+[23]+rev([43,56])

迭代 6:

[45]+[34]+[92]+[75]+[23]+[56]+rev([43])

这相当于:

[45] + [34] + [92] + [75] + [23] + [56] + [43] = [45, 34, 92, 75, 23, 56, 43]

因此在最后一次迭代中,我们颠倒了我们的列表。通过这种方式,你可以使用递归方法来反转 python 中的列表。

您可能也喜欢阅读以下 python 教程。

因此,你可能已经学会了用 python 反转列表的各种方法。下面是我们上面讨论过的方法列表。

  • 用反转函数反转 python 中的列表
  • 用反向迭代器反转 python 中的列表
  • 在 python 中不使用反转函数反转列表
  • 如何在 python 中使用 while 循环反转列表
  • 使用 for 循环反转 python 中的列表
  • 使用切片反转 python 中的列表
  • 使用递归在 python 中反转列表

Bijay Kumar MVPBijay Kumar

Python 是美国最流行的语言之一。我从事 Python 工作已经有很长时间了,我在与 Tkinter、Pandas、NumPy、Turtle、Django、Matplotlib、Tensorflow、Scipy、Scikit-Learn 等各种库合作方面拥有专业知识。我有与美国、加拿大、英国、澳大利亚、新西兰等国家的各种客户合作的经验。查看我的个人资料。

enjoysharepoint.com/

如何在 Python 中反转一个数字[11 种不同的方法]

原文:https://pythonguides.com/reverse-a-number-in-python/

Python & Machine Learning training courses

你知道如何在 Python 中 反转一个数字吗?本教程将讨论如何在 Python反转一个数字。此外,我们还将讨论以下主题。

  • 在 python 中反转数字
  • 如何在 Python 中使用 for 循环反转一个数字
  • 在不使用 for 循环的情况下在 Python 中反转一个数字
  • 在 Python 中使用函数反转数字
  • 使用 while 循环反转 Python 中的数字
  • 如何在 Python 中使用递归反转一个数字
  • 在 Python 中使用内置函数反转一个数字
  • 不使用内置函数在 Python 中反转一个数字
  • 在 Python 中使用切片反转一个数字
  • 如何在 Python 中反转数字的顺序
  • 如何在 Python 中反转列表中的数字
  • 反转一个数字,检查它是否是 Python 中的回文
  • Python 中的反向字符

目录

在 python 中反转一个数字

  • 当一个数反转时,它的数字排列是第一个数字在前,最后一个数字在后,倒数第二个数字在后,以此类推,最后一个数字在最后。
  • Python 中的列表方法、切片方法、递归方法和其他预定义方法可以与条件语句结合使用,以创建反向逻辑函数。对任何类型的用户提供的输入执行这个过程的最简单的方法是使用 reverse()方法。

以数学方式对数字进行简单的逻辑反转:

首先,我们将一个整数除以 10,直到余数不会以相反的顺序出现。

第一次迭代:

num= 675
Reminder = num %10
Reminder = 675%10 = 5

# Second iteration
reminder = Num%10
reminder = 67 %10 = 7 

举例:

通过使用切片方法,我们可以很容易地得到 Python 中原始输入数的倒数。

源代码:

new_number = 76354
print(str(new_number)[::-1])

您可以通过使用字符串切片方法获得反转的字符串。开始:停止:步骤的值为-1。当您将-1 作为一个步骤传递时,起点移动到起点,并在终点停止。

下面是以下给定代码的实现

Reverse a number in python

Reverse a number in python

这就是我们如何在 Python 中反转一个输入数字。

阅读: Python 程序求偶或奇

使用 for 循环在 Python 中反转一个数字

  • 通过利用 for 循环和原始字符串后面的字符,我们可以使用这种技术来反转一个数字。以这种方式,创建了一个新的字符串,该字符串是颠倒的,因为首先添加最后一个字符,然后是倒数第二个,依此类推,最后添加第一个字符。
  • 使用 input()或 raw_input()方法,可以读取输入的数字。接下来,确定输入的值是否是整数。现在检查提供的数字是否大于零。
  • 创建一个名为“reverse”的变量,并将其初始值设置为“0”利用 mod (%)运算符,找出指定输入数字的剩余部分。将变量 reverse 乘以 10 后的剩余值相加。

举例:

input_number = '6783'

result = ''
for m in range(len(input_number), 0, -1):
   result += input_number[m-1]
print('The reverse number is =', result)

在这个例子中,我们首先声明一个变量,并给它分配一个整数,然后使用 for 循环方法和 len()方法。

下面是下面给出的代码的截图。

Reverse a number in Python using for loop

Reverse a number in Python using for loop

在这个例子中,我们已经了解了如何使用 for 循环方法在 Python 中反转一个数字。

阅读:在 Python 中检查列表是否为空

在不使用 for 循环的情况下用 Python 反转一个数字

  • 本节将讨论如何在不使用 for 循环的情况下在 Python 中反转一个数字。
  • 该值必须首先由用户输入,并存储在变量 n 中。执行 while 循环,并利用模数运算符来确定数字的最后一位。然后,下一个数字保持在位置 1,倒数第二个数字保持在位置 10,依此类推。
  • 最后一步是将数字除以 10,去掉最后一个数字。当数字的值为 0 时,循环结束,数字打印在背面。

举例:

new_number = int(input("Enter the value: "))
result = 0
while(new_number>0):
 remainder = new_number % 10
 result = (result * 10) + remainder
 new_number = new_number//10
# Print the result
 print("Reverse number:",result)

在这个例子中,我们将设置条件,如果输入的数字小于 0,那么它将除以 10 并显示结果。

你可以参考下面给出的代码截图

Reverse a number in Python without using for loop

Reverse a number in Python without using for loop

这就是我们如何在不使用 for-loop 方法的情况下在 Python 中反转一个数字。

阅读: Python 方块一号

使用函数在 Python 中反转一个数字

  • 在这个例子中,我们将使用 reversed()函数获得 Python 中一个数字的倒数。
  • reversed()函数返回一个对象,以逆序遍历组件,但实际上并不反转任何内容。reversed()方法提供了一个迭代器来帮助以逆序遍历所提供的列表,但是它会修改列表。
  • 为了反转一个数字,我们可以很容易地使用 Python reversed()函数。可以反向迭代字符串或列表的指针是函数的返回值。之后,我们可以使用 Python 的 join()方法从这个迭代器中提取反转的数字。

举例:

new_number = 65783
con_str = str(new_number)
#By using the reversed method
result = "".join(reversed(con_str))
#Display reversed number
print("Reversed Number is:",result)

在下面给出的代码中,我们首先声明输入数字,然后将数字转换成字符串。之后,我们使用 reversed()函数,并将转换后的字符串赋给它。执行此代码后,它将显示原始数字的倒数。

下面是以下给定代码的执行过程

Reverse a number in Python using the function

Reverse a number in Python using the function

这就是我们如何在 Python 中使用 reversed 函数来反转一个数字。

阅读: Python 打印无换行符

使用 while 循环在 Python 中反转一个数字

  • 在这里,我们将讨论如何使用 while 循环概念来获取 Python 中原始数字的倒数。
  • 我们需要首先添加最后一位数字,因为我们将开始一个新的变量来保存我们的倒计数。我们可以在 while 循环中取这个数的 10 的模来获得最终的数字。最后一个数字将揭示这个问题的解决方案。

举例:

new_number = 8656
new_output = 0

while new_number != 0:
    new_val = new_number % 10
    new_output = new_output * 10 + new_val
    new_number //= 10

print("Display the reversed Number: " + str(new_output))

下面是以下代码的截图

Reverse a number in Python using a while loop

Reverse a number in Python using a while loop

正如你在截图中看到的,我们已经学会了如何使用 while 循环概念来获取 Python 中原始数字的倒数。

阅读: 11 Python 列表方法

使用递归在 Python 中反转一个数字

  • 递归用于以这种方式反转一个数。递归的缺点是它允许无限调用递归函数,直到到达最后一个索引。
  • 然后,在这个基本实例中,可以将字母添加到生成的反向字符串中,这将作为我们的起点。将首先插入最后一个索引,然后是倒数第二个索引,依此类推,最后添加第一个索引。因此,通过首先使用递归函数,然后添加字母,我们可以反转字符串。

举例:

new_num = 0
def reverse(new_val):
    global new_num
    if(new_val > 0):
        Reminder = new_val %10
        new_num = (new_num *10) + Reminder
        reverse(new_val //10)
    return new_num

new_val = int(input(" Enter the number : "))
new_num = reverse(new_val)
print(" The Result reverse number is:",new_num)

下面是以下给定代码的输出

Reverse a number in Python using recursion

Reverse a number in Python using recursion

这是如何在 Python 中通过使用递归方法来反转一个数字。

阅读: Python 命名约定

在 Python 中使用内置函数反转一个数字

  • 这里我们讨论如何使用 Python 中的内置函数来反转一个数字。
  • Python 中具有预定义功能的函数称为内置函数。Python 解释器上随时都有各种函数可供使用。
  • 在这个例子中,我们将使用 Python 中提供的 reversed()内置函数,Python 有一个名为 reversed 的内置方法,它返回一个已被反转的序列的迭代器。

举例:

让我们举一个例子,并检查如何通过使用内置函数在 Python 中反转一个数字。

源代码:

def new_number(m):  
   result = ''.join(reversed(m))
   return result

new_val = input('Enter the value: ')
# Display the result
print('Reverse number is:', new_number(new_val))

你可以参考下面的截图

Reverse a number in Python using an inbuilt function

Reverse a number in Python using an inbuilt function

在这个例子中,我们已经了解了如何通过使用内置函数来反转 Python 中的数字。

阅读: Python 添加示例

使用切片在 Python 中反转一个数字

  • 在这种方法中,我们将使用字符串切片技术反转数字。首先将数字转换为字符串,然后使用 Python 语言的字符串切片功能将字符串分割并以相反的顺序相加。我们将对给定的整数输入执行以下操作。
  • 将数字的格式更改为字符串,然后利用字符串切片来反转数字。
  • 通过使用这种技术,我们可以使用字符串切片方法来反转一个数字。在 Python 中,切片是检索字符串的子串的过程。

举例:

让我们举一个例子,检查如何通过使用切片方法在 Python 中反转一个数字。

new_num = 73485
str_val = str(new_num)
m = len(str_val )
result = str_val [m::-1]

#output reversed number
print("Reversed Number is:", result)

下面是以下给定代码的实现

Reverse a number in Python using slicing

Reverse a number in Python using slicing

正如你在截图中看到的,我们已经学习了如何使用切片方法在 Python 中反转一个数字。

阅读:解析 Python 时意外的 EOF

如何反转 Python 中的数字顺序

  • 在这一节中,我们将讨论如何在 Python 中反转数字的顺序。
  • 通过将输入变量从输入数字的后面移到前面,可以反转数字。当一个数反转时,它的数字排列是第一个数字在前,最后一个数字在后,倒数第二个数字在后,以此类推,最后一个数字在最后。

举例:

input_number = '5678'

result = ''
for m in range(len(input_number), 0, -1):
   result += input_number[m-1]
print('The reverse number is =', result)

你可以参考下面的截图

How to reverse the order of numbers in Python

How to reverse the order of numbers in Python

在这个例子中,我们已经理解了如何在 Python 中反转数字的顺序。

阅读: Python 对于基数为 10 的 int()无效文字

在 Python 中反转列表中的数字

  • 在这种技术中,我们利用了 Python 中的列表提供 reverse()方法来翻转列表元素的事实。
  • 因此,使用 Python 的 list()函数,我们只需将我们的数字添加到列表中,反转它们以获得相反的顺序,然后将它们合并以获得最终的反转数字。
  • 要将一个字符串与一个 iterable 对象结合起来,可以使用 Python 的 join()函数。结果,iterable 的字符串被连接起来创建一个全新的字符串。如果 iterable 包含任何非字符串值,它将引发 TypeError 异常。

示例:

new_num = "9432"
# Convert input num into list
new_lis = list(new_num)
# By using the reverse() method
new_lis .reverse()
#converting list into number
new_num = ''.join(new_lis )
print (" Result of input number is: ", new_num)

下面是以下给定代码的输出。

Reverse a number in a list in Python

Reverse a number in a list in Python

这就是我们如何在 Python 中创建列表中的反向数字。

阅读:Python 中的注释行

反转一个数字,检查它是否是 Python 中的回文

  • 回文是由字母组成的一个单词或一组数字,当向前和向后阅读时,这些字母拼成同一个单词。Python 回文允许回文单词中包含标点、符号、字母和空格。
  • 当反转时,一个数必须保持不变,才有资格成为回文。如果数字不等于它本身的倒数,它就不是一个回文。

举例:

new_val=input(("Enter the value:"))
new_reverse = int(str(new_val)[::-1])

if new_val == new_reverse:
  print('It is Not Palindrome')
else:
  print("It is Palindrome")

下面是以下代码的截图

Reverse a number and check if it is a palindrome in Python

Reverse a number and check if it is a palindrome in Python

阅读: Python 检查变量是否为整数

Python 中的反向字符

  • 在这一节中,我们将讨论如何在 Python 中反转一个字符或字符串。
  • 在本例中,我们将创建一个向后移动并从字符串末尾开始的切片。
  • 在这种情况下,片段短语[::-1]表示向后移动一步,从位置 0 开始,到字符串的末尾结束。

举例:

new_char = "USA" [::-1]
print(new_char)

下面是以下给定代码的实现

Reverse character in Python

Reverse character in Python

另外,看看更多的 Python 教程。

在本文中,我们将讨论如何在 Python 中反转一个数字。此外,我们还将讨论以下主题。

  • 在 python 中反转数字
  • 使用 for 循环反转 Python 中的数字
  • 在不使用 for 循环的情况下在 Python 中反转一个数字
  • 在 Python 中使用函数反转数字
  • 使用 while 循环反转 Python 中的数字
  • 使用递归在 Python 中反转一个数字
  • 在 Python 中使用内置函数反转一个数字
  • 不使用内置函数在 Python 中反转一个数字
  • 在 Python 中使用切片反转一个数字
  • 如何在 Python 中反转数字的顺序
  • 在 Python 中反转列表中的数字
  • 反转一个数字,检查它是否是 Python 中的回文
  • Python 中的反向字符

Machine Learning From Basic to AdvancedArvind

Arvind 目前是 TSInfo Technologies 的高级 Python 开发人员。他精通 Python 库,如 NumPy 和 Tensorflow。

点击 Django 中的 HTML 按钮运行 Python 函数

原文:https://pythonguides.com/run-python-function-by-clicking-on-html-button-in-django/

Python & Machine Learning training courses

在本 Python Django 教程中,我将讲解如何通过点击 DjangoT5 中的 HTML 按钮来运行 python 函数。

在进行 Django 项目时,我需要一个 HTML 按钮来调用 python 函数。所以,我做了研究,并最终创建了一个 HTML 按钮,点击打印表乘法。

所以,在这里我们会看到:

  • 如何在 Django 建立项目
  • 如何在 Django 中创建 HTML 按钮来执行 python 函数
  • 通过点击 Django 中的 HTML 按钮运行 Python 函数来获得乘法表
  • 如何在 Django 模板标签中使用 for 循环
  • 如何在 Django 中使用范围函数
  • 使用 FormClass 创建 Django 表单

在本文的最后,您可以通过点击一个 HTML 按钮来下载执行 python 脚本的代码。

这是我们将在这里建造的。

execute python multiplication table function in django

Run Python function by clicking on HTML Button in Django to get multiplication table

目录

点击 Django 中的 HTML 按钮运行 Python 函数

现在,让我们一步一步地看看如何在 Django 中点击按钮运行 Python 函数并显示表乘法。

建立 Django 项目

首先,我们需要使用下面给出的命令在 Django 中建立一个项目。这里 HTMLButtonProject 是项目的名称。

django-admin startproject HTMLButtonProject

在 Django 项目中,使用如下命令创建一个名为 MyApp 的 Django 应用程序。

python manage.py startapp MyApp

html button to run python function in django

Set Up Django Project

打开项目目录下的 settings.py 文件,将 MyApp 添加到 INSTALLED_APP 列表中。

how to run python function by clicking on HTML button

Install MyApp

Django 中的请求首先到达位于项目目录中的 urls.py ,然后到达 app 目录中 urls.py 中的匹配 URL。在其中添加下面的代码。

from django.contrib import admin
from django.urls import path,include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('',include('MyApp.urls')),
]

此外,检查:Django 中的应用程序和项目之间的差异

创建 Django 表单

创建 Django 表单, MyApp 应用程序将使用该表单从用户处接收数字输入。将以下代码添加到我们在 app 目录中创建的 forms.py 文件中。

from django import forms

class TableForm(forms.Form):
    num = forms.IntegerField(label='Please Enter Number:')

这里,我们使用表单创建一个表单。表单类命名为表格表单。它有作为 Django 整数字段。此外,我们通过传递 label 关键字来更改它的标签。

点击 Django 中的 HTML 按钮运行 Python 函数,得到乘法表

在主项目目录中创建一个名为 Templates 的子目录来存储 Django 应用程序的 HTML 文件。

打开 settings.py 文件,更新 DIRS 指向 Templates 文件夹的位置。

execute python code by django html button

Set Templates Folder Location

要在 HTML 按钮 click 上定义表格乘法函数的前端,在模板文件夹中创建一个名为home.html的 HTML 文件。并添加下面的代码。

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Table Multiplication</title>

    <!-- Bootstrap CSS -->
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.0.0/dist/css/bootstrap.min.css"
        integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">

</head>

<body>
    <div class="mt-md-5">
        <div class="pl-sm-5">
            <div class="pr-sm-5">
                <h3 align="center">Welcome to PythonGuides</h3>
                <br>
                <hr>
                <form method="POST">
                    {% csrf_token %}
                    <table>
                        {{ form.as_table }}
                    </table>
                    <button type="submit" class="btn btn-success">Print Table</button>
                </form>
                <br>
                <hr>
                <p>Number to print its multiplication table:{{Number}}</p>
                <br>
                <hr>
                {% for x in range %}
                {{ Number }} x {{x}} = {% widthratio Number 1 x %} <br>
                {% endfor %}
            </div>
        </div>
    </div>

    <!-- jQuery first, then Popper.js, then Bootstrap JS -->
    <script src="https://code.jquery.com/jquery-3.2.1.slim.min.js"
        integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN"
        crossorigin="anonymous"></script>
    <script src="https://cdn.jsdelivr.net/npm/popper.js@1.12.9/dist/umd/popper.min.js"
        integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q"
        crossorigin="anonymous"></script>
    <script src="https://cdn.jsdelivr.net/npm/bootstrap@4.0.0/dist/js/bootstrap.min.js"
        integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl"
        crossorigin="anonymous"></script>
</body>

</html>
  • 首先,通过在任何其他样式表之前添加样式表到页面标题的链接来加载 CSS。
  • 然后,分别使用 div 类 mt-md-5div 类 pl-sm-5div 类 pr-sm-5 来添加引导填充和间距。
  • 为了构建我们用来从用户输入数字的表单,我们使用了带有 POST 方法的 form 标签。然后,使用 csrf_token 保护表单免受网络攻击,使用 form.as_table 以表格格式呈现表单字段。
  • 添加一个提交按钮来打印乘法表。并且,使用 p 标签打印乘法表。然后,我们将使用循环的从序列中一次获取一个值。
  • 然后,我们使用这个单一值来获得输入数字的表乘法。为了得到表格乘法,我们使用了一个 widthratio 过滤器,在过滤器中,( Number 1 x )的意思就是(Number * x)。
  • 另外,我们使用 h3brhr 标签分别添加标题、换行和水平线。

阅读: Python Django 表单验证

定义视图

要定义主逻辑,打开 views.py 文件并添加下面给出的代码。

from django.shortcuts import render
from .forms import TableForm

# Create your views here.

def html_button(request):
    if request.method == "POST":  
        form = TableForm(request.POST)  
        if form.is_valid():  
            num = form.cleaned_data['num']
            return render(request, 'home.html', {'Number':num, 'range': range(1,11)})
    else:  
        form = TableForm()  
    return render(request,'home.html',{'form':form})
  • 首先,从 forms.py 中导入 TableForm 并创建一个名为 html_button 的视图。
  • 然后调用 if 语句,检查请求方法是否为 POST
    • 如果是,我们通过 TableForm(请求。POST) 将数据绑定到表单类,这样我们就可以进行验证。
    • 现在,调用 is_valid 方法来验证用户输入的内容,如果验证成功,调用表单cleaned _ data[‘表单域’]来验证数据。
    • numrange() 函数返回home.html,通过传递给 render 函数得到一个从 1 到 10 的数字列表。
  • 如果请求方法是 GET ,用户将看到一个空白的输入字段,使用 render() 函数输入数字。

现在,我们必须用 URL 映射视图以便调用它,因此我们必须在 app 目录中创建一个名为 urls.py 的文件。包括下面的代码。

from django.urls import path
from . import views

urlpatterns = [
path('', views.html_button, name='htmlbutton'),
]

阅读: Python Django app 上传文件

执行 Django 应用程序

要启动开发服务器,请在终端中键入下面给出的命令并运行服务器。

python manage.py runserver

它成功地打开了用于做表乘法的网页,如下所示。

Run Python function by clicking on HTML Button in Django

Run Python Function on HTML Button Click

现在,填写您要打印其表格的号码,然后单击“打印表格”按钮。

create html button to execute python function in django

Table Multiplication Web Page

例如,我在这里输入数字 7,单击打印表格按钮,它将打印 7 的表格。

using django create html button to execute python function

HTML Button Click Python

这就是我们如何通过使用 Django 点击 HTML 按钮来运行 Python 函数。

点击 Django 中的 HTML 按钮,下载运行 Python 函数的完整代码

代码如下:

Execute Python Function on HTML Button click

结论

这样,我们就成功地创建了一个 Python 函数,它将在单击 HTML 按钮时执行。我们还学习了使用 form 类创建一个表单,该表单将接受用户在 integer 字段中的输入。

此外,我们还讨论了以下主题

  • 如何在 Django 建立项目
  • 如何在 Django 中创建 HTML 按钮来执行 python 函数
  • 通过点击 Django 中的 HTML 按钮运行 Python 函数来获得乘法表
  • 如何在 Django 模板标签中使用 for 循环
  • 如何在 Django 中使用范围函数
  • 使用 FormClass 创建 Django 表单

另外,请查看以下关于 Python Django 的教程

Bijay Kumar MVPBijay Kumar

Python 是美国最流行的语言之一。我从事 Python 工作已经有很长时间了,我在与 Tkinter、Pandas、NumPy、Turtle、Django、Matplotlib、Tensorflow、Scipy、Scikit-Learn 等各种库合作方面拥有专业知识。我有与美国、加拿大、英国、澳大利亚、新西兰等国家的各种客户合作的经验。查看我的个人资料。

enjoysharepoint.com/

在 Django 中运行 Python 脚本

原文:https://pythonguides.com/run-python-script-in-django/

Python & Machine Learning training courses

当您有了一种处理 web 开发和 Python 的新方法时,您可能偶尔需要在一个 Django 项目或 shell 中运行 Python 脚本。有多种方法可以做到这一点。在本文中,我们将研究运行 Python 脚本的各种 Django 方法。还有,我已经讲了这几点:—

  • 如何使用 shell 在 Django 项目中运行 Python 脚本
  • 如何使用 execfile 在 Django 中运行 Python 脚本
  • 如何使用扩展包在 Django 中运行 Python 脚本

目录

使用 shell 在 Django 项目中运行 Python 脚本

我们先来了解一下什么是 Python 脚本。

打算立即执行的 Python 文件被称为脚本。当你运行它的时候,它应该立即行动。因此,脚本经常包含在任何类或函数的参数之外编写的代码。

运行 Python 脚本和管理文件位于同一个文件夹

现在,让我们学习使用 shell 在 Django 项目中运行 Python 脚本。

  • 首先,使用下面给出的命令在 Django 中创建一个项目(名为“my project”)。
django-admin startproject MyProject
  • 现在,在 Django 项目的 manage.py 文件所在的同一个文件夹中创建一个 python 文件(名为 "sample.py" )。
# Program to add two numbers
# Define number
num1 = 15
num2 = 26
# Add number
result = num1 + num2
# Print result
print('Sum of the two number:', result)

这里,我们定义了 num1num2 两个具有整型值的变量。接下来,我们使用 + 操作符定义将 num1 和 num2 相加的结果变量。最后调用 print() 函数打印两个数之和。

  • 导航到 Django 项目的根文件夹,其中有 manage.py 文件。

run python script in django

Navigate to the manage.py file folder

  • 键入下面给出的命令,使用 shell 在 Django 项目中运行 Python 脚本 "sample.py"
manage.py shell < sample.py

python script using shell

Run Python Script in Django Project

当 Python 脚本和管理文件位于同一个文件夹中时,这就是如何使用 shell 在 Django 项目中运行 Python 脚本。

阅读: Python 列表追加 Django

运行 Python 脚本并管理位于不同文件夹的文件

现在,让我们学习使用 shell 在 Django 项目中运行 Python 脚本。

  • 首先,使用下面给出的命令在 Django 中创建一个项目(名为“my project”)。
django-admin startproject MyProject
  • 现在,在任何其他位置创建一个 python 文件(名为 "xyz.py" )。
# Program to multiple two numbers
# Define number
num1 = 23
num2 = 5
# Multiply number
result = 23 * 5
# Print result
print('Product of two number:'. result)

这里,我们定义了 num1num2 两个具有整型值的变量。接下来,我们使用 *** 运算符定义将 num1 和 num2 相乘的结果变量。最后调用 print() 函数打印两个数的乘积。

  • 导航到 Django 项目的根文件夹,其中有 manage.py 文件。
  • 键入下面给出的命令,使用 shell 在 Django 项目中运行 Python 脚本“xyz.py”。
manage.py shell < C:\Users\PythonGuides\Desktop\xyz.py

python script in django using shell

Run Python Script in Django Project

这就是当 Python 脚本和管理文件不在同一个文件夹中时,如何使用 shell 在 Django 项目中运行 Python 脚本。

阅读: Python Django 连接字符串

使用 execfile 在 Django 中运行 Python 脚本

我们先来了解一下什么是 execfile。

execfile 或 exec 是评估文件内容的 python 方法。

现在,让我们学习使用 execfile 在 Django 项目中运行 Python 脚本。

  • 首先,使用下面的命令在 Django 中创建一个名为“my project”的项目。
django-admin startproject MyProject
  • 现在,在您选择的任何位置创建一个 python 文件(名称为“ABC . py”)。
# Python program to swap two variables
# To take inputs from the user
a = input('Enter value of x: ')
b = input('Enter value of y: ')

# create a temporary variable and swap the values
temp = a
a = b
b = temp

# Print the result
print('The value of a after swapping: {}'.format(a))
print('The value of b after swapping: {}'.format(b)) 

这里,我们定义了两个名为 ab 的变量,它们通过 input() 方法接受用户输入。然后将第一个变量 a 的值存储在临时变量 temp 中。

然后将第二个变量 b 的值赋给变量 a 。最后,通过给变量 b 赋予临时变量 temp 给定值,我们完成了在两个变量之间交换值的过程。

使用 print() 方法最终打印交换的值。

  • 导航到 Django 项目的根文件夹,其中有 manage.py 文件。

  • 现在,通过键入下面给出的命令登录 Django shell。

manage.py shell
  • 键入下面给出的命令,使用 execfile 在 Django 项目中运行 Python 脚本 "abc.py"
exec(open(''C:/Users/PythonGuides/Desktop/abc.py'').read()) 

python script suing exec 1

Run Python Script in Django Project

这就是当 Python 脚本和管理文件位于任何位置时,如何使用 exec 在 Django 项目中运行 Python 脚本。

阅读: Python Django MySQL CRUD

如何使用扩展包在 Django 中运行 Python 脚本

有时候你对网站开发有新的想法,但是我们对此并不确定。这个新想法可以是任何脚本,包括数据加载、处理和清理。

因此,实现业务逻辑的理想方式通常不是直接将其放在视图或模型中。此时,您可以将 Django 扩展作为一个包安装,这样就可以运行额外的脚本。

现在,让我们学习使用扩展包在 Django 项目中运行 Python 脚本。

  • 如您所知,Django 扩展是一个允许您运行额外脚本的包。你必须先用 pip 安装它。打开终端窗口并键入。
pip install django-extensions

install django extension

Install django-extensions

  • 通过在终端中键入下面给出的命令,创建一个 Django 项目“Course”
django-admin startproject Course
  • 通过在终端键入以下命令,在 Django 项目中创建一个 Django 应用程序“Register”
python manage.py startapp Register
  • 在位于 settings.py 文件的已安装 app 列表中添加“DJ nago-extensions”包和“注册” app。

install django

Settings.py

  • 默认情况下,Django 在项目下有一个 urls.py 文件。Django 建议将新创建的应用程序“注册”映射到其中。
from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path("admin/", admin.site.urls),
    path('', include('Register.urls'))
] 
  • 创建 Django 模型,定义我们将要存储的“Register”应用程序数据的字段和行为。在 Django app 中打开 models.py 文件,添加下面的代码。
from django.db import models

# Create your models here.

class CourseRegister(models.Model):
    title = models.CharField(max_length = 500)
    author = models.CharField(max_length=200)

    def __str__(self):
        return self.author 

在这里,我们创建了模型类“course register”,它具有以下数据库字段。

  • 标题:博文的标题。
  • 作者:写帖子的人。

并使用 def str(self) 来更改 Django 模型中对象的显示名称。当我们返回自己的作者时,它将呈现作者的名字。

  • 要在管理站点注册一个模型“course register”,打开 admin.py 文件并添加下面给出的代码。
# Register your models here.
from django.contrib import admin
from .models import CourseRegister

admin.site.register(CourseRegister)
  • 为了映射视图,在 app 目录下创建一个 urls.py 文件,并在其中添加下面给出的代码。
from django.urls import path
from Register import views

urlpatterns = [
    path('', views.home, name='home'),
]
  • 视图是接收 web 请求并返回 web 响应的 Python 函数或类。将下面给出的代码添加到 app 目录下的 views.py 文件中。
from django.shortcuts import render

# Create your views here.
def home():
    print('Hello') 
  • 要为模型创建一个迁移,使用下面给出的命令。在迁移文件夹中,将创建一个迁移文件。
python manage.py makemigrations
  • 创建一个迁移,然后迁移它以反映数据库。下面是 migrate 命令。
python manage.py migrate
  • 要创建超级用户,请在终端中键入以下命令。
python manage.py createsuperuser
  • 要在“course register”模型中添加记录,请打开管理应用程序并添加它。

run extra script admin

Admin Site

  • 在项目目录中创建一个脚本文件夹来添加额外的 Python 脚本。
  • 创建 init。脚本文件夹中的 py 文件,表明脚本也是 Django 项目的一部分。
  • 创建一个新文件 "sample.py" ,它将包含您需要执行的代码。在其中添加下面给出的代码。
from Register.models import CourseRegister

def run():
    result = CourseRegister.objects.all()
    print(result)

为了在运行服务器之前从 CourseRegister 模型中获取所有对象,我们创建了这个额外的脚本,它有一个函数 run

  • 现在,通过键入下面给出的命令运行脚本 sample
python manage.py runscript sample

runscript in django

Run Script

这就是如何使用扩展包在 Django 中运行 Python 脚本。

您可能也喜欢阅读下面的 Python Django 教程。

结论

在本文中,我们从 Django 学习了三种不同的运行 Python 脚本的方法。此外,我们还讨论了以下主题。

  • 如何使用 shell 在 Django 项目中运行 Python 脚本
  • 如何使用 execfile 在 Django 中运行 Python 脚本
  • 如何使用扩展包在 Django 中运行 Python 脚本

machine learning training courseTanya Puri

拥有丰富 Django 和 Matplotlib 经验的 Python 开发人员,目前在 TSInfo Technologies 工作。我正在成为专业程序员、博客写手和 YouTuber 的路上。

Scikit 学习准确性 _ 分数

原文:https://pythonguides.com/scikit-learn-accuracy-score/

Python & Machine Learning training courses

在本 Python 教程中,我们将了解 python 中的sci kit learn accuracy _ score,我们还将涵盖与sci kit learn accuracy _ score相关的不同示例。我们将讨论这些话题。

  • scikit 学习准确性 _ 分数
  • scikit 学习准确性 _ 分数示例
  • scikit 如何学习 accuracy_score 的工作原理

目录

Scikit 学习准确度 _ 分数

accuracy_score 方法用于计算 Python Scikit learn 中正确预测的派系或计数的准确度。

从数学上来说,它代表了所有预测中真阳性和真阴性之和的比率。

Accuracy Score = (TP+TN)/ (TP+FN+TN+FP)

在这里,我们还可以借助 sklearn 的 accuracy_score 方法来计算准确度。

accuracy_score(y_true, y_pred, normalize=False)

在多标签分类中,函数返回子集精度。如果样本的整个预测标签集与真实标签集精确匹配。那么子集的精度是 1.0,否则,它的精度几乎是 0.0。

语法:

sklearn.metrics.accuracy_score(y_true,y_pred,normalize=False,sample_weight=None)

参数:

  • y_true: 标签指示数组/稀疏矩阵正确标签。
  • y_pred: 分类器返回的标签指示数组/稀疏矩阵预测标签。
  • 规格化:包含布尔值(真/假)。如果为假,则返回正确机密样本的数量。否则,它返回正确机密样本的分数。

退货:

分数:浮动

  • 如果 normalize == True,则返回正确机密样本的数量(float),否则返回正确机密样本的数量(int)。
  • 最佳性能是归一化真时的 1,归一化假时的样本数。

我们也可以用以下方式编写 accure_score:

accuracy_score(
 y_true,
 y_pred,
 normalize: bool=True,
 sample_weight:__class__ =None
)

阅读sci kit-学习逻辑回归

scikit 学习准确性 _ 分数示例

正如我们所知,scikit learn library 用于专注于数据建模,而不是专注于加载和操作数据。这里我们可以使用 scikit learn accuracy_score 来计算数据的准确性。

例 1:

在这个例子中,我们可以看到

  • y_pred = [0,5,2,4] 作为我们可以选择的预测值。
  • y_true = [0,1,2,3] 用作已经给定的真值。
  • accuracy_score(y_true,y_pred) 用于检查真值和预测值的 accuracy_score。
 import numpy as np
 from sklearn.metrics import accuracy_score
 y_pred = [0, 5, 2, 4]
 y_true = [0, 1, 2, 3]
 accuracy_score(y_true, y_pred)

输出:

运行上面的代码后,我们得到了下面的输出,我们可以看到这里的归一化值为真,由此我们得到了浮点值。

scikit learn accuracy score example

scikit learn accuracy score example

例 2:

在这个例子中,我们可以看到:

  • 如果 normalize == False,则返回正确的置信度样本数(int)。

  • y_pred = [0,5,2,4] 作为我们可以选择的预测值。

  • y_true = [0,1,2,3] 用作已经给定的真值。

  • accuracy_score(y_true,y_pred,normalize=False) 用于检查真值和预测值的 accuracy_score。

import numpy as np
from sklearn.metrics import accuracy_score
y_pred = [0, 5, 2, 4]
y_true = [0, 1, 2, 3]
accuracy_score(y_true, y_pred)
accuracy_score(y_true, y_pred, normalize=False)

输出:

运行上述代码后,我们得到以下输出,其中我们可以看到 true_value 和 predicted_value 的准确性得分。

scikit learn accuracy score normalize example

scikit learn accuracy score normalize example

Read Scikit-learn Vs Tensorflow

scikit 如何学习 accuracy_score 的工作原理

sci kit learnaccuracy_score使用多标签分类,其中 accuracy _ score 函数计算子集准确度。

  • 为样本预测的标签集必须与 y_true 中的相应标签集完全匹配。
  • 定义模型如何执行所有类的准确性。如果所有的类都同等重要,这是很有用的。
  • 模型的准确性计算为正确预测数与预测总数之间的比率。

代码:

在下面的代码中,我们导入了两个库 import numpyimport sklearn.metrics ,用于预测模型的准确性。

  • y_true = ["正"、"负"、"正"、"正"、"正"、"负"] 这是模型的真值。
  • y_pred = ["正","负","正","正","负","正","正"]该模型的预测值。
  • 精度= (r[0][0] + r[-1][-1]) / numpy。 sum(r) 用于计算模型的精度 csore。
  • print(accuracy) 用于在屏幕上打印 accuracy_score。
import numpy 
import sklearn.metrics

y_true = ["positive", "negative", "negative", "positive", "positive", "positive", "negative"]
y_pred = ["positive", "negative", "positive", "positive", "negative", "positive", "positive"]

r = sklearn.metrics.confusion_matrix(y_true, y_pred)

r = numpy.flip(r)

accuracy = (r[0][0] + r[-1][-1]) / numpy.sum(r)
print(accuracy)

输出:

在运行上面的代码之后,我们得到了下面的输出,我们可以看到模型的准确度分数被打印在屏幕上。

How scikit learn accuracy_score works

How scikit learn accuracy score works

sklearn.metrics 有函数 accuracy_score() 可以用来计算准确度。

accuracy = sklearn.metrics.accuracy_score(y_true, y_pred)

您可能还喜欢:

因此,在本教程中,我们讨论了在 python 中的sci kit learn accuracy _ score,我们还涵盖了与其实现相关的不同示例。这是我们已经讨论过的例子列表。

  • scikit 学习准确性 _ 分数
  • scikit 学习准确性 _ 分数示例
  • scikit 如何学习 accuracy_score 的工作原理

Bijay Kumar MVPBijay Kumar

Python 是美国最流行的语言之一。我从事 Python 工作已经有很长时间了,我在与 Tkinter、Pandas、NumPy、Turtle、Django、Matplotlib、Tensorflow、Scipy、Scikit-Learn 等各种库合作方面拥有专业知识。我有与美国、加拿大、英国、澳大利亚、新西兰等国家的各种客户合作的经验。查看我的个人资料。

enjoysharepoint.com/

Scikit 学习分类教程

原文:https://pythonguides.com/scikit-learn-classification/

Python & Machine Learning training courses

在本Python 教程中,我们将学习scikit 如何学习分类,我们还将涵盖与 scikit 学习分类相关的不同例子。此外,我们将涵盖这些主题。

  • Scikit 学习分类
  • Scikit 学习分类报告
  • Scikit 学习分类指标
  • Scikit 学习分类示例
  • Scikit 学习分类树
  • Scikit 学习分类准确性
  • Scikit 学习分类报告支持

目录

Scikit 学习分类

在本节中,我们将了解如何在 Python 中使用 Scikit 学习 分类的工作原理。

  • 分类是一种数据分析形式,它提取描述重要数据类别的模型。
  • 分类是一堆不同的类,并将这些类分成不同的类别。

代码:

在下面的代码中,我们将导入一些库,从中我们可以执行分类任务。

  • ****中的x _ tra,x_test,y_train,y_test = train_test_split(x,y,test_size=0.4,random_state=42) 用于拆分训练和测试部分的数据。
  • axis.scatter(x_train[:,0],x_train[:,1],c=y_train,cmap=cm_bright,edgecolors="k") 用于绘制训练点。
  • x_test[:,0],x_test[:,1],c=y_test,cmap=cm_bright,alpha=0.6,edgecolors="k") 用于绘制测试点。
import numpy as num
import matplotlib.pyplot as plot
from matplotlib.colors import ListedColormap
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.datasets import make_moons, make_circles, make_classification
from sklearn.neural_network import MLPClassifier
from sklearn.neighbors import KNeighborsClassifier
from sklearn.svm import SVC
from sklearn.gaussian_process import GaussianProcessClassifier
from sklearn.gaussian_process.kernels import RBF
from sklearn.tree import DecisionTreeClassifier
from sklearn.ensemble import RandomForestClassifier, AdaBoostClassifier
from sklearn.naive_bayes import GaussianNB
from sklearn.discriminant_analysis import QuadraticDiscriminantAnalysis

h = 0.02 

name = [
    "Nearest Neighbors",
    "Linear SVM",
    "RBF SVM",
    "Gaussian Process",
    "Decision Tree",
    "Random Forest",
    "Neural Net",
    "AdaBoost",
    "Naive Bayes",
    "QDA",
]

classifier = [
    KNeighborsClassifier(3),
    SVC(kernel="linear", C=0.025),
    SVC(gamma=2, C=1),
    GaussianProcessClassifier(1.0 * RBF(1.0)),
    DecisionTreeClassifier(max_depth=5),
    RandomForestClassifier(max_depth=5, n_estimators=10, max_features=1),
    MLPClassifier(alpha=1, max_iter=1000),
    AdaBoostClassifier(),
    GaussianNB(),
    QuadraticDiscriminantAnalysis(),
]

x, y = make_classification(
    n_features=2, n_redundant=0, n_informative=2, random_state=1, n_clusters_per_class=1
)
rang = num.random.RandomState(2)
x += 2 * rang.uniform(size=x.shape)
linearly_separable = (x, y)

datasets = [
    make_moons(noise=0.3, random_state=0),
    make_circles(noise=0.2, factor=0.5, random_state=1),
    linearly_separable,
]

figure = plot.figure(figsize=(27, 9))
i = 1

for ds_cnt, ds in enumerate(datasets):

    x, y = ds
    x = StandardScaler().fit_transform(x)
    x_train, x_test, y_train, y_test = train_test_split(
        x, y, test_size=0.4, random_state=42
    )

    x_min, x_max = x[:, 0].min() - 0.5, x[:, 0].max() + 0.5
    y_min, y_max = x[:, 1].min() - 0.5, x[:, 1].max() + 0.5
    xx, yy = num.meshgrid(num.arange(x_min, x_max, h), num.arange(y_min, y_max, h))

    cm = plot.cm.RdBu
    cm_bright = ListedColormap(["pink", "green"])
    axis = plot.subplot(len(datasets), len(classifier) + 1, i)
    if ds_cnt == 0:
        axis.set_title("Input data")

    axis.scatter(x_train[:, 0], x_train[:, 1], c=y_train, cmap=cm_bright, edgecolors="r")

    axis.scatter(
        x_test[:, 0], x_test[:, 1], c=y_test, cmap=cm_bright, alpha=0.6, edgecolors="r"
    )
    axis.set_xlim(xx.min(), xx.max())
    axis.set_ylim(yy.min(), yy.max())
    axis.set_xticks(())
    axis.set_yticks(())
    i += 1

    for name, clf in zip(name, classifier):
        axis = plot.subplot(len(datasets), len(classifier) + 1, i)
        clf.fit(x_train, y_train)
        score = clf.score(x_test, y_test)

        if hasattr(clf, "decision_function"):
            Z = clf.decision_function(num.c_[xx.ravel(), yy.ravel()])
        else:
            Z = clf.predict_proba(num.c_[xx.ravel(), yy.ravel()])[:, 1]

        Z = Z.reshape(xx.shape)
        axis.contourf(xx, yy, Z, cmap=cm, alpha=0.8)

        axis.scatter(
            x_train[:, 0], x_train[:, 1], c=y_train, cmap=cm_bright, edgecolors="r"
        )

        axis.scatter(
            x_test[:, 0],
            x_test[:, 1],
            c=y_test,
            cmap=cm_bright,
            edgecolors="r",
            alpha=0.6,
        )

        axis.set_xlim(xx.min(), xx.max())
        axis.set_ylim(yy.min(), yy.max())
        axis.set_xticks(())
        axis.set_yticks(())
        if ds_cnt == 0:
            axis.set_title(name)
        axis.text(
            xx.max() - 0.3,
            yy.min() + 0.3,
            ("%.2f" % score).lstrip("0"),
            size=15,
            horizontalalignment="right",
        )
        i += 1

plot.tight_layout()
plot.show()

输出:

运行上面的代码后,我们得到了下面的输出,其中我们可以看到我们有一个不同的分类器,并且我们将这个分类分类到不同的类别中。

scikit learn classification

scikit learn classification

另外,检查: Scikit-learn 逻辑回归

Scikit 学习分类报告

在本节中,我们将了解sci kit 学习分类报告如何在 python 中工作。

分类报告是用于根据分类算法计算预测值的过程。

代码:

在下面的代码中,我们将从 sklearn.metrics 导入 classification_report,通过它我们可以计算分类算法的预测值。

  • targetnames = ['Class 1 ',' Class 2 ',' Class 3'] 用作目标变量。
  • 【打印(分类 _ 报告(y_true,y_pred,target_names=targetnames)) 用于打印分类的报告。
from sklearn.metrics import classification_report
y_true = [0, 1, 2, 2, 1]
y_pred = [0, 0, 2, 2, 1]
targetnames = ['Class 1', 'Class 2', 'Class 3']
print(classification_report(y_true, y_pred, target_names=targetnames))

输出:

运行上面的代码后,我们得到下面的输出,我们可以看到屏幕上打印了分类报告。

scikit learn classification report

scikit learn classification report

阅读: Scikit 学习决策树

Scikit 学习分类指标

在这一节中,我们将学习scikit 如何在 python 中学习分类指标

  • 分类度量是需要正面类别的概率评估的过程。
  • sklearn.metrics 是实现分数、概率函数来计算分类性能的函数。

代码:

在下面的代码中,我们将从 sklearn.metrics 导入 fbeta_score,make_scorer,通过它需要正类的概率评估。

  • scores = make _ scorer(mycustomlossfunc,greater_is_better=False) 用于计算得分函数。
  • classifier = classifier.fit(x,y) 用于拟合分类器。
from sklearn.metrics import fbeta_score, make_scorer
ftwoscorer = make_scorer(fbeta_score, beta=2)
from sklearn.model_selection import GridSearchCV
from sklearn.svm import LinearSVC
Grid = GridSearchCV(LinearSVC(), param_grid={'C': [1, 10]},
                    scoring=ftwoscorer, cv=5)
import numpy as num
def mycustomlossfunc(y_true, y_pred):
    differ = num.abs(y_true - y_pred).max()
    return num.log1p(differ)

scores = make_scorer(mycustomlossfunc, greater_is_better=False)
x = [[1], [0]]
y = [0, 1]
from sklearn.dummy import DummyClassifier
classifier = DummyClassifier(strategy='most_frequent', random_state=0)
classifier = classifier.fit(x, y)
mycustomlossfunc(y, classifier.predict(x))

输出:

运行上面的代码后,我们得到下面的输出,我们可以看到一个损失函数打印在屏幕上。

scikit learn classification metrics

scikit learn classification metrics

阅读: Scikit 学习层次聚类

Scikit 学习分类示例

在本节中,我们将学习 python 中的 scikit 学习分类示例

分类是一种数据分析形式,它提取描述重要数据类别的模型。

代码:

在下面的代码中,我们将从 sklearn.gaussian_process 导入 gaussianProcessClassifier,还将导入 matplotlib.pyplot 作为我们绘制概率类的 plot

  • iris = datasets . load _ iris()用于加载 iris 数据集。
  • x = iris.data[:,0:2] 用于只取前两个特征进行可视化。
  • plot.figure(figsize=(3 * 2,nclassifiers * 2)) 用于在屏幕上绘制图形。
  • probe = classifier . predict _ proba(xfull)用于查看概率。
  • axis = plot.axes([0.16,0.05,0.8,0.06]) 用于在图形上绘制坐标轴。
  • plot.title("类的概率")用来给图加标题。
import matplotlib.pyplot as plot
import numpy as num

from sklearn.metrics import accuracy_score
from sklearn.linear_model import LogisticRegression
from sklearn.svm import SVC
from sklearn.gaussian_process import GaussianProcessClassifier
from sklearn.gaussian_process.kernels import RBF
from sklearn import datasets

iris = datasets.load_iris()
x = iris.data[:, 0:2]  
y = iris.target

nfeatures = x.shape[1]

c = 10
kernel = 1.0 * RBF([1.0, 1.0]) 

classifier = {
    "L1 logistic": LogisticRegression(
        C=c, penalty="l1", solver="saga", multi_class="multinomial", max_iter=10000
    ),
    "L2 logistic (Multinomial)": LogisticRegression(
        C=c, penalty="l2", solver="saga", multi_class="multinomial", max_iter=10000
    ),
    "L2 logistic (OvR)": LogisticRegression(
        C=c, penalty="l2", solver="saga", multi_class="ovr", max_iter=10000
    ),
    "Linear SVC": SVC(kernel="linear", C=c, probability=True, random_state=0),
    "GPC": GaussianProcessClassifier(kernel),
}

nclassifiers = len(classifiers)

plot.figure(figsize=(3 * 2, nclassifiers * 2))
plot.subplots_adjust(bottom=0.2, top=0.95)

xx = num.linspace(3, 9, 100)
yy = num.linspace(1, 5, 100).T
xx, yy = num.meshgrid(xx, yy)
xfull = num.c_[xx.ravel(), yy.ravel()]

for index, (name, classifier) in enumerate(classifiers.items()):
    classifier.fit(x, y)

    y_predict = classifier.predict(x)
    accuracy = accuracy_score(y, y_predict)
    print("Accuracy (train) for %s: %0.1f%% " % (name, accuracy * 100))

    probab = classifier.predict_proba(xfull)
    nclasses = num.unique(y_pred).size
    for k in range(nclasses):
        plot.subplot(nclassifiers, nclasses, index * nclasses + k + 1)
        plot.title("Class %d" % k)
        if k == 0:
            plot.ylabel(name)
        imshowhandle = plot.imshow(
            probab[:, k].reshape((100, 100)), extent=(3, 9, 1, 5), origin="lower"
        )
        plot.xticks(())
        plot.yticks(())
        idx = y_pred == k
        if idx.any():
            plot.scatter(x[idx, 0], x[idx, 1], marker="o", c="b", edgecolor="r")

axis = plot.axes([0.16, 0.05, 0.8, 0.06])
plot.title("Probability of classes")
plot.colorbar(imshowhandle, cax=axis, orientation="horizontal")

plot.show()

输出:

运行上面的代码后,我们得到下面的输出,从中我们可以看到模型的准确性和概率显示在屏幕上。

scikit learn classification example

scikit learn classification example

阅读: Scikit 学习随机森林

Scikit 学习分类树

在这一节中,我们将了解 scikit 如何在 python 中学习分类树

分类树是一种监督学习方法。该功能旨在创建一个模型,通过该模型预测目标变量。

代码:

在下面的代码中,我们将从 sklearn.model_selection 中导入 cross_val_score,通过它我们可以计算交叉值得分。

  • classifier = decision tree classifier(random _ state = 1)用于创建模型并预测目标值。
  • cross_val_score(classifier,iris.data,iris.target,cv=20) 用于计算交叉值得分。
from sklearn.datasets import load_iris
from sklearn.model_selection import cross_val_score
from sklearn.tree import DecisionTreeClassifier
classifier = DecisionTreeClassifier(random_state=1)
iris = load_iris()
cross_val_score(classifier, iris.data, iris.target, cv=20)

输出:

运行上面的代码后,我们得到下面的输出,其中我们可以看到交叉值得分被打印在屏幕上。

scikit learn classification tree

scikit learn classification tree

阅读: Scikit 学习隐马尔可夫模型

Scikit 学习分类精度

在这一节中,我们将了解sci kit 如何学习分类精度在 python 中的工作原理。

  • 分类是一个有一堆类别的过程,这些类别被分为不同的类别。
  • 分类的准确性定义为预测总数中正确预测的数量。

代码:

在下面的代码中,我们将从 sklearn.metrics 导入 accuracy_score,它实现 score、probability 函数来计算分类性能。

accuracy_score(ytrue,ypred) 用于计算准确度分数。

from sklearn.metrics import accuracy_score
ypred = [0, 1, 2, 3]
ytrue = [0, 3, 2, 1]
accuracy_score(ytrue, ypred)

输出:

运行上面的代码后,我们得到了下面的输出,我们可以看到屏幕上显示了准确度分数。

scikit learn classification accuracy

scikit learn classification accuracy

关于 accuracy_score 的详细信息,请查看以下教程:Scikit learn accuracy _ score

Scikit 学习分类报告支持

在本节中,我们将了解sci kit 学习分类报告支持如何在 python 中工作。

正如我们所知,分类报告用于计算预测的价值,支持度定义为放置在给定类别中的真实反应的样本数。

代码:

  • 在下面的代码中,我们将从 sklearn.metrics 导入 precision _ recall _ fs core _ support,通过它打印真实的响应。
  • precision _ recall _ fs core _ support(y _ true,y_pred,average='micro') 用于在屏幕上打印报告支持得分。
import numpy as num
from sklearn.metrics import precision_recall_fscore_support
y_true = num.array(['rat', 'cat', 'rat', 'bat', 'rat', 'cat'])
y_pred = num.array(['rat', 'rat', 'bat', 'cat', 'bat', 'bat'])
precision_recall_fscore_support(y_true, y_pred, average='micro')

输出:

运行上面的代码后,我们得到下面的输出,其中我们可以看到屏幕上打印了报告支持得分。

scikit learn classification report support

scikit learn classification report support

另外,看看 Scikit learn 上的更多文章。

因此,在本教程中,我们讨论了 scikit learn 分类,并且我们还涵盖了与其实现相关的不同示例。这里是我们已经介绍过的的例子列表。

  • Scikit 学习分类
  • Scikit 学习分类报告
  • Scikit 学习分类指标
  • Scikit 学习分类示例
  • Scikit 学习分类树
  • Scikit 学习分类准确性
  • Scikit 学习分类报告支持

Bijay Kumar MVPBijay Kumar

Python 是美国最流行的语言之一。我从事 Python 工作已经有很长时间了,我在与 Tkinter、Pandas、NumPy、Turtle、Django、Matplotlib、Tensorflow、Scipy、Scikit-Learn 等各种库合作方面拥有专业知识。我有与美国、加拿大、英国、澳大利亚、新西兰等国家的各种客户合作的经验。查看我的个人资料。

enjoysharepoint.com/

Scikit 学习混淆矩阵

原文:https://pythonguides.com/scikit-learn-confusion-matrix/

Python & Machine Learning training courses

在这个 Python 教程中,我们将学习sci kit 学习混淆矩阵如何在 Python 中工作,我们还将涵盖与 Scikit 学习混淆矩阵相关的不同示例。我们将讨论这些话题。

  • Scikit 学习混淆矩阵
  • Scikit 学习混淆矩阵示例
  • Scikit 学习混淆矩阵图
  • Scikit 学习混淆矩阵准确性
  • Scikit 学习混淆矩阵多类
  • Scikit 学习混淆矩阵显示
  • Scikit 学习混淆矩阵标签
  • Scikit 学习混淆矩阵标准化

目录

Scikit 学习混淆矩阵

在本节中,我们将了解sci kit 学习混淆矩阵如何在 python 中工作

  • Scikit learn 混淆矩阵被定义为一种计算分类性能的技术。
  • 混淆矩阵也用于预测或总结分类问题的结果。

代码:

  • y_true = [2,0,0,2,0,1] 用于获取真值。
  • y_pred = [0,0,2,0,0,2] 用于得到预测值。
  • 混淆矩阵(y_true,y_pred) 用于评估混淆矩阵。
from sklearn.metrics import confusion_matrix
y_true = [2, 0, 0, 2, 0, 1]
y_pred = [0, 0, 2, 0, 0, 2]
confusion_matrix(y_true, y_pred)

输出:

运行上面的代码后,我们得到下面的输出,我们可以看到混淆矩阵值被打印在屏幕上。

Scikit learn confusion matrix

Scikit learn confusion matrix

阅读: Scikit 学习图像处理

Scikit 学习混淆矩阵示例

在本节中,我们将了解Scikit 如何学习混淆矩阵示例在 python 中工作。

  • Scikit 学习混淆矩阵示例被定义为总结分类结果的技术。
  • 混淆矩阵还预测了分类模型的正确和错误预测的数量。

代码:

在下面的代码中,我们将导入一些库,从中我们可以制作混淆矩阵。

  • iris = datasets . load _ iris()用于加载虹膜数据。
  • class _ names = iris . target _ names用于获取目标名称。
  • x_train,x_test,y_train,y_test = train_test_split(x,y,random_state=0) 用于将数据集拆分为训练和测试数据。
  • 分类器= svm。SVC(kernel="linear ",C=0.02)。fit(x _ train,y_train)用于拟合模型。
  • confusionmatrix display . from _ estimator()用于绘制混淆矩阵。
  • print(display . confusion _ matrix)用于打印混淆矩阵。
import numpy as num
import matplotlib.pyplot as plot

from sklearn import svm, datasets
from sklearn.model_selection import train_test_split
from sklearn.metrics import ConfusionMatrixDisplay

iris = datasets.load_iris()
x = iris.data
y = iris.target
class_names = iris.target_names

x_train, x_test, y_train, y_test = train_test_split(x, y, random_state=0)

classifier = svm.SVC(kernel="linear", C=0.02).fit(x_train, y_train)

num.set_printoptions(precision=2)

title_options = [
    ("Confusion matrix, without normalization", None),
    ("Normalized confusion matrix", "true"),
]
for title, normalize in title_options:
    display = ConfusionMatrixDisplay.from_estimator(
        classifier,
        x_test,
        y_test,
        display_labels=class_names,
        cmap=plot.cm.Blues,
        normalize=normalize,
    )
    display.ax_.set_title(title)

    print(title)
    print(display.confusion_matrix)

plot.show()

输出:

在下面的输出中,我们可以看到分类的结果在混淆矩阵的帮助下总结在屏幕上。

Scikit learn confusion matrix example

Scikit learn confusion matrix example

阅读: Scikit 学习非线性【完全指南】

Scikit 学习混淆矩阵图

在本节中,我们将了解 Scikit 如何在 python 中学习混淆矩阵图。

  • Scikit 学习混淆矩阵图用于在屏幕上绘制图形,以总结模型的结果。
  • 它用于绘制图表,以预测模型的正确或错误预测数。

代码:

在下面的代码中,我们将导入一些库,从中我们可以在屏幕上绘制混淆矩阵。

  • x,y = make _ class ification(random _ state = 0)用于进行分类。
  • x_train,x_test,y_train,y_test = train_test_split(x,y,random_state=0) 用于将数据集拆分为训练集和测试集。
  • classifier.fit(x_train,y_train) 用于拟合模型。
  • 绘制混淆矩阵(分类器,x_test,y_test) 用于在屏幕上绘制混淆矩阵。
import matplotlib.pyplot as plot
from sklearn.datasets import make_classification
from sklearn.metrics import plot_confusion_matrix
from sklearn.model_selection import train_test_split
from sklearn.svm import SVC
x, y = make_classification(random_state=0)
x_train, x_test, y_train, y_test = train_test_split(
         x, y, random_state=0)
classifier = SVC(random_state=0)
classifier.fit(x_train, y_train)
SVC(random_state=0)
plot_confusion_matrix(classifier, x_test, y_test)  
plot.show()

输出:

运行上面的代码后,我们得到下面的输出,其中我们可以看到屏幕上绘制的混淆矩阵。

Scikit learn confusion matrix plot

Scikit learn confusion matrix plot

阅读: Scikit 学习 KNN 教程

Scikit 学习混淆矩阵准确度

在本节中,我们将了解 python 中模型的 Scikit learn 混淆矩阵精度

Scikit learn 混淆矩阵精度用于计算矩阵的精度我们的模型结果有多精确。

代码:

在下面的代码中,我们将导入一些库,从中我们可以计算模型的精度。

  • y_pred = [1,3,2,0] 用于预测预测值。
  • y_true = [0,1,2,3] 用于预测真值。
  • accuracy_score(y_true,y_pred) 用于预测准确率得分。
from sklearn.metrics import confusion_matrix
from sklearn.metrics import accuracy_score
y_pred = [1, 3, 2, 0]
y_true = [0, 1, 2, 3]
accuracy_score(y_true, y_pred)
accuracy_score(y_true, y_pred, normalize=False)
import numpy as num
accuracy_score(num.array([[0, 1], [1, 1]]), num.ones((2, 2)))

输出:

运行上面的代码后,我们得到下面的输出,其中我们可以看到屏幕上打印了混淆矩阵准确度分数。

Scikit learn confusion matrix accuracy

Scikit learn confusion matrix accuracy

阅读: Scikit 学习情绪分析

Scikit 学习混淆矩阵多类

在这一节中,我们将学习scikit 如何在 python 中学习混淆矩阵多类工作

Scikit 学习混淆矩阵多类被定义为对三个或更多类中的一个进行分类的问题。

代码:

在下面的代码中,我们将导入一些库,从中我们可以创建一个混淆矩阵多类。

  • df = PD . read _ CSV(" iris . CSV ")用于加载数据集。
  • df.dtypes 用于选择数据的类型。
**#importing packages**
import pandas as pds
import numpy as num
import seaborn as sb
import matplotlib.pyplot as plot

df = pd.read_csv("IRIS.csv")
df.head()
df.dtypes

Scikit learn confusion matrix multi class dataset

Scikit learn confusion matrix multi-class dataset

  • x = df.drop(['species'],axis=1) 用于分离自变量和因变量。
  • print(x.shape) 用于打印数据集的形状。
**#Separating independant variable and dependent variable("Species")**
x = df.drop(['species'], axis=1)
y = df['species']

print(x.shape)

print(y.shape)

scikit learn confusion matrix multiclass separating dependent or independent variable

scikit learn confusion matrix multiclass separating dependent or independent variable

  • x_train,x_test,y_train,y_test = train_test_split(x,y,test_size=0.3,random_state=0) 用于将数据集拆分为训练集和测试集。
  • print(x_train.shape) 用于打印列车组的形状。
  • print(x_test.shape) 用于打印测试集的形状。
**# Splitting the dataset to Train and test**
from sklearn.model_selection import train_test_split
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.3, random_state=0)

print(x_train.shape)
print(y_train.shape)
print(x_test.shape)
print(y_test.shape)

Scikit learn confusion matrix multi class train test data split

Scikit learn confusion matrix multi-class train test data split

  • 分类器= SVC(内核= '线性')。fit(x_train,y_train) 用于从 x 训练和 y 训练中训练分类器。
  • cm =混淆矩阵(y_test,y_pred) 用于创建混淆矩阵。
  • cm_df = pd。DataFrame() 用于创建数据帧。
  • plot.figure(figsize=(5,4)) 用于绘制图形。
from sklearn.svm import SVC
from sklearn.metrics import confusion_matrix

classifier = SVC(kernel = 'linear').fit(x_train,y_train)
classifier.predict(x_train)

y_pred = classifier.predict(X_test)

cm = confusion_matrix(y_test, y_pred)

cm_df = pd.DataFrame(cm,
                     index = ['SETOSA','VERSICOLR','VIRGINICA'], 
                     columns = ['SETOSA','VERSICOLR','VIRGINICA'])

plot.figure(figsize=(5,4))
sb.heatmap(cm_df, annot=True)
plot.title('Confusion Matrix')
plot.ylabel('Actal Values')
plot.xlabel('Predicted Values')
plot.show()

Scikit learn confusion matrix multi class

Scikit learn confusion matrix multiclass

阅读: Scikit 学习梯度下降

Scikit 学习混淆矩阵显示

在本节中,我们将了解 Scikit 如何在 python 中学习混淆矩阵显示

Scikit 学习混淆矩阵显示被定义为一个矩阵,其中 I,j 等于一个组中预测的观察次数。

代码:

在下面的代码中,我们将学习导入一些库,从中我们可以看到混淆矩阵是如何在屏幕上显示的。

  • x,y = make _ class ification(random _ state = 0)用于进行分类。
  • x_train,x_test,y_train,y_test = train_test_split(x,y,random_state=0) 用于将数据集拆分为训练和测试数据。
  • classifier.fit(x_train,y_train) 用于拟合数据。
  • predictions = classifier . predict(x _ test)用于预测数据。
  • display = confusionmatrix display(confusion _ matrix = cm,display _ labels = classifier . classes _)用于显示混淆矩阵。
  • display.plot() 用于绘制矩阵。
import matplotlib.pyplot as plot
from sklearn.datasets import make_classification
from sklearn.metrics import confusion_matrix, ConfusionMatrixDisplay
from sklearn.model_selection import train_test_split
from sklearn.svm import SVC
x, y = make_classification(random_state=0)
x_train, x_test, y_train, y_test = train_test_split(x, y,
                                                    random_state=0)
classifier = SVC(random_state=0)
classifier.fit(x_train, y_train)
SVC(random_state=0)
predictions = classifier.predict(x_test)
cm = confusion_matrix(y_test, predictions, labels=classifier.classes_)
display = ConfusionMatrixDisplay(confusion_matrix=cm,
                               display_labels=classifier.classes_)
display.plot()

plot.show()

输出:

运行上面的代码后,我们得到下面的输出,我们可以看到屏幕上显示了一个混淆矩阵。

Scikit learn confusion matrix display

Scikit learn confusion matrix display

阅读: Scikit 学习分类教程

Scikit 学习混淆矩阵标签

在本节中,我们将学习Scikit 如何在 python 中学习混淆矩阵标签。

Scikit 学习混淆矩阵标签被定义为二维阵列,其将预测的标签组与真实标签进行对比。

代码:

在下面的代码中,我们将导入一些库来了解 scikit 学习混淆矩阵标签是如何工作的。

  • y_true = num.array([[1,0,0],[0,1,1]]) 用于收集数组中的真标签。
  • y_pred = num.array([[1,0,1],[0,1,0]]) 用于收集数组中的预测标签。
  • 多标签混淆矩阵(y_true,y_pred) 用于得到多标签混淆矩阵。
import numpy as num
from sklearn.metrics import multilabel_confusion_matrix
y_true = num.array([[1, 0, 0],
                    [0, 1, 1]])
y_pred = num.array([[1, 0, 1],
                   [0, 1, 0]])
multilabel_confusion_matrix(y_true, y_pred)

输出:

运行上面的代码后,我们得到下面的输出,我们可以看到混淆矩阵标签打印在屏幕上。

Scikit learn confusion matrix labels

Scikit learn confusion matrix labels

阅读: Scikit 学习超参数调整

Scikit 学习混淆矩阵归一化

在本节中,我们将了解sci kit 如何学习混淆矩阵规范化在 python 中的工作方式

Scikit 学习混淆矩阵标准化被定义为代表每组中存在一个样本的过程。

代码:

在下面的代码中,我们将导入一些库,从中我们可以规范化矩阵。

  • iris = datasets . load _ iris()用于加载数据。
  • x_train,x_test,y_train,y_test = train_test_split(X,y,random_state=0) 用于将数据集拆分为训练和测试数据。
  • 分类器= svm。SVC(kernel='linear ',C=0.01) 用作分类器。
  • y _ pred = classifier . fit(x _ train,y_train)。【T1 预测(x_test)】用于拟合模型。
  • cm =混淆矩阵(y_true,y_pred) 用于计算混淆矩阵。
  • classes = classes[unique _ labels(y _ true,y_pred)] 用于数据中出现的标签。
  • 图,axis = plot.subplots() 用于在屏幕上绘制图。
  • plot . setp(axis . get _ xticklabels(),rotation=45,ha="right ",rotation_mode="anchor") 用于设置对齐和旋转刻度。
  • plot _ confusion _ matrix(y _ test,y_pred,classes=class_names,normalize=True,title= '归一化混淆矩阵')用于绘制归一化混淆矩阵。
import numpy as num
import matplotlib.pyplot as plot
from sklearn import svm, datasets
from sklearn.model_selection import train_test_split
from sklearn.metrics import confusion_matrix
from sklearn.utils.multiclass import unique_labels

iris = datasets.load_iris()
x_digits = iris.data
y = iris.target
class_names = iris.target_names

x_train, x_test, y_train, y_test = train_test_split(X, y, random_state=0)

classifier = svm.SVC(kernel='linear', C=0.01)
y_pred = classifier.fit(x_train, y_train).predict(x_test)

def plot_confusion_matrix(y_true, y_pred, classes,
                          normalize=False,
                          title=None,
                          cmap=plot.cm.Blues):

    if not title:
        if normalize:
            title = 'Normalized confusion matrix'

    cm = confusion_matrix(y_true, y_pred)

    classes = classes[unique_labels(y_true, y_pred)]
    if normalize:
        cm = cm.astype('float') / cm.sum(axis=1)[:, num.newaxis]
        print("Normalized confusion matrix")

    print(cm)

    figure, axis = plot.subplots()
    im = axis.imshow(cm, interpolation='nearest', cmap=cmap)
    axis.figure.colorbar(im, ax=axis)

    axis.set(xticks=num.arange(cm.shape[1]),
           yticks=num.arange(cm.shape[0]),

           xticklabels=classes, yticklabels=classes,
           title=title,
           ylabel='True label',
           xlabel='Predicted label')

    plot.setp(axis.get_xticklabels(), rotation=45, ha="right",
             rotation_mode="anchor")

    fmt = '.2f' if normalize else 'd'
    thresh = cm.max() / 2.
    for i in range(cm.shape[0]):
        for j in range(cm.shape[1]):
            axis.text(j, i, format(cm[i, j], fmt),
                    ha="center", va="center",
                    color="cyan" if cm[i, j] > thresh else "red")
    figure.tight_layout()
    return axis

plot_confusion_matrix(y_test, y_pred, classes=class_names, normalize=True,
                      title='Normalized confusion matrix')

plot.show()

输出:

在下面的代码中,我们将看到一个标准化的混淆矩阵数组被创建,并且一个标准化的混淆矩阵图被绘制在屏幕上。

Scikit learn confusion matrix normalized

Scikit learn confusion matrix normalized

另外,看看更多的 Scikit 学习教程。

因此,在本教程中,我们讨论了 Scikit learn 混淆矩阵,并且我们还涵盖了与其实现相关的不同示例。这是我们已经讨论过的例子列表。

  • Scikit 学习混淆矩阵
  • Scikit 学习混淆矩阵示例
  • Scikit 学习混淆矩阵图
  • Scikit 学习混淆矩阵准确性
  • Scikit 学习混淆矩阵多类
  • Scikit 学习混淆矩阵显示
  • Scikit 学习混淆矩阵标签
  • Scikit 学习混淆矩阵标准化

Bijay Kumar MVPBijay Kumar

Python 是美国最流行的语言之一。我从事 Python 工作已经有很长时间了,我在与 Tkinter、Pandas、NumPy、Turtle、Django、Matplotlib、Tensorflow、Scipy、Scikit-Learn 等各种库合作方面拥有专业知识。我有与美国、加拿大、英国、澳大利亚、新西兰等国家的各种客户合作的经验。查看我的个人资料。

enjoysharepoint.com/

Scikit learn 交叉验证[实用指南]

原文:https://pythonguides.com/scikit-learn-cross-validation/

Python & Machine Learning training courses

在这个 Python 教程中,我们将学习Scikit learn 交叉验证如何在 Python 中工作,我们还将涵盖与 Scikit learn 交叉验证相关的不同示例。此外,我们将涵盖这些主题。

  • Scikit 学习交叉验证
  • Scikit 学习交叉验证分数
  • Scikit 学习交叉验证套索
  • Scikit 学习交叉验证预测
  • Scikit 学习交叉验证时间序列
  • Scikit 学习交叉验证分离
  • Scikit 学习交叉验证混淆矩阵
  • Scikit 学习交叉验证超参数
  • Scikit 学习交叉验证混洗
  • Scikit 学习交叉验证网格搜索

目录

Scikit 学习交叉验证

在本节中,我们将了解 python 中的 Scikit learn 交叉验证工作原理。

交叉验证被定义为一个过程,在该过程中,我们使用数据集训练我们的模型,然后使用支持数据集进行评估。

代码:

在下面的代码中,我们将导入一些库,我们将从这些库中训练我们的模型并对其进行评估。

  • x,y = datasets . load _ iris(return _ X _ y = True)用于加载数据集。
  • x_train,x_test,y_train,y_test = train_test_split(x,y,test_size=0.4,random_state=0) 用于将数据集拆分为训练数据和测试数据。
  • x_train.shape,y_train.shape 用于评估列车模型的形状。
  • 分类器= svm。SVC(内核= '线性',C=1)。fit(x _ train,y_train)用于拟合模型。
  • scores = cross _ val _ score(classifier,x,y,cv=7) 用于计算交叉值得分。
import numpy as num
from sklearn.model_selection import train_test_split
from sklearn import datasets
from sklearn import svm

x, y = datasets.load_iris(return_X_y=True)
x.shape, y.shape
x_train, x_test, y_train, y_test = train_test_split(
       x, y, test_size=0.4, random_state=0)

x_train.shape, y_train.shape
x_test.shape, y_test.shape
classifier = svm.SVC(kernel='linear', C=1).fit(x_train, y_train)
classifier.score(x_test, y_test)
from sklearn.model_selection import cross_val_score
classifier = svm.SVC(kernel='linear', C=1, random_state=42)
scores = cross_val_score(classifier, x, y, cv=7)

输出:

运行上述代码后,我们得到以下输出,其中我们可以看到交叉验证指标得分以数组的形式打印在屏幕上。

scikit learn cross validation

Scikit learn cross-validation

Read: Scikit-learn Vs Tensorflow

Scikit 学习交叉验证分数

在本节中,我们将了解 Scikit 如何在 python 中学习交叉验证分数

交叉验证分数定义为估计新数据的模型能力并计算数据分数的过程。

代码:

在下面的代码中,我们将导入一些库,从中我们可以计算交叉验证分数。

  • diabetes = datasets . load _ diabetes()用于加载数据。
  • x = diabetes.data[:170] 用于计算糖尿病数据。
  • print(cross_val_score(lasso,x,y,cv=5)) 用于在屏幕上打印分数。
from sklearn import datasets, linear_model
from sklearn.model_selection import cross_val_score
diabetes = datasets.load_diabetes()
x = diabetes.data[:170]
y = diabetes.target[:170]
lasso = linear_model.Lasso()
print(cross_val_score(lasso, x, y, cv=5))

输出:

运行上面的代码后,我们得到下面的输出,其中我们可以看到交叉验证分数被打印在屏幕上。

scikit learn cross validation score

Scikit learn cross-validation score

阅读: Scikit 学习决策树

Scikit 学习交叉验证套索

在本节中,我们将了解 Scikit 如何在 python 中学习交叉验证套索的工作原理。

Lasso 代表最小绝对收缩和选择器运算符,用于确定惩罚项的权重。

代码:

在下面的代码中,我们将导入一些库,从中我们可以计算交叉验证 lasso 得分。

  • x,y = make_regression(noise=5,random_state=0) 用于进行或生成回归。
  • 回归= LassoCV(cv=7,random_state=0)。fit(x,y)用于拟合套索模型。
  • regression.score(x,y) 用于计算 lasso 得分。
 from sklearn.linear_model import LassoCV
from sklearn.datasets import make_regression
x, y = make_regression(noise=5, random_state=0)
regression = LassoCV(cv=7, random_state=0).fit(x, y)
regression.score(x, y)

输出:

在下面的输出中,我们可以看到 lasso 分数被计算出来,结果被打印在屏幕上。

scikit learn cross validation lasso score

Scikit learn cross-validation lasso score

阅读: Scikit 学习隐马尔可夫模型

Scikit 学习交叉验证预测

在这一节中,我们将了解 Scikit learn 交叉验证预测如何在 python 中工作。

  • Scikit learn 交叉验证预测方法用于通过可视化来预测误差。
  • 交叉验证用于评估数据,并使用数据的不同部分来训练和测试模型。

代码:

在下面的代码中,我们将导入一些库,从中我们可以通过交叉验证来评估预测。

  • x,y = datasets . load _ diabetes(return _ X _ y = True)用于加载数据集。
  • predict = cross _ val _ predict(linear model,x,y,cv=10) 用于预测模型,返回相同大小的数组。
  • fig,axis = plot.subplots() 用于在屏幕上绘制图形。
  • axis.scatter(y,predict,edgecolors=(0,0,0)) 用于在图形上绘制散点图。
  • axis.plot([y.min(),y.max()],[y.min(),y.max()]," b-",lw=6) 用于在图形上绘制轴。
  • axis . set _ xlabel(" Measured ")用于在图形上绘制 x 标签。
  • axis . set _ y label(" Predicted ")用于在图形上绘制 y 标签。
from sklearn import datasets
from sklearn.model_selection import cross_val_predict
from sklearn import linear_model
import matplotlib.pyplot as plot

linearmodel = linear_model.LinearRegression()
x, y = datasets.load_diabetes(return_X_y=True)

predict = cross_val_predict(linearmodel,x, y, cv=10)

fig, axis = plot.subplots()
axis.scatter(y, predict, edgecolors=(0, 0, 0))
axis.plot([y.min(), y.max()], [y.min(), y.max()], "b--", lw=6)
axis.set_xlabel("Measured")
axis.set_ylabel("Predicted")
plot.show()

输出:

运行上面的代码后,我们得到了下面的输出,其中我们可以看到在屏幕上绘制了带有交叉验证预测的图形。

scikit learn cross validation predict

scikit learn cross-validation predict

阅读: Scikit 学习层次聚类

Scikit 学习交叉验证时间序列

在这一节中,我们将了解Scikit 如何在 python 中学习交叉验证时序工作

  • Scikit learn crossvalidation 时间序列被定义为由单个观察值组成的一系列测试集。
  • 训练集只包括在时间上早于形成测试集观测值的观测值。
  • 在时间序列交叉验证中,在构建预测时不考虑未来的观测值。

代码:

在下面的代码中,我们将导入一些库,从中我们可以看到如何通过时间序列分割数据。

  • x = num.array([[1,2],[3,4],[1,2],[3,4],[1,2],[3,4]]) 用于给 x 赋值。
  • y = num.array([1,2,3,4,5,6]) 用于给 y 赋值。
  • print(timeseriscv)用于打印时间序列交叉验证数据。
  • x = num . randn(12,2) 用于将 12 个样本的测试规模固定为 2。
  • print("TRAIN:",train_index," TEST:",test_index) 用于打印训练和测试数据。
import numpy as num
from sklearn.model_selection import TimeSeriesSplit
x = num.array([[1, 2], [3, 4], [1, 2], [3, 4], [1, 2], [3, 4]])
y = num.array([1, 2, 3, 4, 5, 6])
timeseriescv = TimeSeriesSplit()
print(timeseriescv)
for train_index, test_index in timeseriescv.split(x):
     print("TRAIN:", train_index, "TEST:", test_index)
     x_train, x_test = x[train_index], x[test_index]
     y_train, y_test = y[train_index], y[test_index]

x = num.random.randn(12, 2)
y = num.random.randint(0, 2, 12)
timeseriescv = TimeSeriesSplit(n_splits=3, test_size=2)
for train_index, test_index in tscv.split(x):
    print("TRAIN:", train_index, "TEST:", test_index)
    x_train, x_test = x[train_index], x[test_index]
    y_train, y_test = y[train_index], y[test_index]

输出:

在下面的输出中,我们可以看到训练和测试数据被时间序列交叉验证分割。

scikit learn cross validation time series

Scikit learn cross-validation time series

阅读: Scikit 学习岭回归

Scikit 学习交叉验证分割

在本节中,我们将了解Scikit 如何在 python 中学习交叉验证分割

  • 交叉验证被定义为用于评估有限数据样本上的模型的过程。
  • 交叉验证数据可以用一个称为 k 的参数分成许多组。

代码:

在下面的代码中,我们将导入一些库,从这些库中模型可以被分成许多组。

  • num.random.seed(1338) 用于生成随机数。
  • n_splits = 6 用于拆分数据。
  • percentiles_classes = [0.1,0.3,0.6] 用于生成类数据。
  • groups = num . h stack([[ii] 10 for ii in range(10)])*用于平均分割组
  • fig,axis = plot.subplots() 用于绘制图形。
  • axis.scatter() 用于绘制散点图。
  • axis.set_title("{} ")。格式(类型(cv))。name),fontsize=15) 用来给图形加标题。
from sklearn.model_selection import (
    TimeSeriesSplit,
    KFold,
    ShuffleSplit,
    StratifiedKFold,
    GroupShuffleSplit,
    GroupKFold,
    StratifiedShuffleSplit,
    StratifiedGroupKFold,
)
import numpy as num
import matplotlib.pyplot as plot
from matplotlib.patches import Patch

num.random.seed(1338)
cmapdata = plot.cm.Paired
cmapcv = plot.cm.coolwarm
n_splits = 6
n_points = 100
x = num.random.randn(100, 10)

percentiles_classes = [0.1, 0.3, 0.6]
y = num.hstack([[ii] * int(100 * perc) for ii, perc in enumerate(percentiles_classes)])

groups = num.hstack([[ii] * 10 for ii in range(10)])

def visualize_groups(classes, groups, name):
    # Visualize dataset groups
    fig, axis = plot.subplots()
    axis.scatter(
        range(len(groups)),
        [0.5] * len(groups),
        c=groups,
        marker="_",
        lw=50,
        cmap=cmapdata,
    )
    axis.scatter(
        range(len(groups)),
        [3.5] * len(groups),
        c=classes,
        marker="_",
        lw=50,
        cmap=cmapdata,
    )
    axis.set(
        ylim=[-1, 5],
        yticks=[0.5, 3.5],
        yticklabels=["Data\ngroup", "Data\nclass"],
        xlabel="Sample index",
    )

visualize_groups(y, groups, "nogroups")
def plot_cv_indices(cv, x, y, group, ax, n_splits, lw=10):
    """Create a sample plot for indices of a cross-validation object."""

    **# Generate the training/testing visualizations for each CV split
    for ii, (tr, tt) in enumerate(cv.split(X=x, y=y, groups=group)):**
        **# Fill in indices with the training/test groups**
        indices = np.array([np.nan] * len(x))
        indices[tt] = 1
        indices[tr] = 0

      **  # Visualize the results**
        axis.scatter(
            range(len(indices)),
            [ii + 0.5] * len(indices),
            c=indices,
            marker="_",
            lw=lw,
            cmap=cmapcv,
            vmin=-0.2,
            vmax=1.2,
        )

    axis.scatter(
        range(len(x)), [ii + 1.5] * len(x), c=y, marker="_", lw=lw, cmap=cmapdata
    )

    axis.scatter(
        range(len(x)), [ii + 2.5] * len(x), c=group, marker="_", lw=lw, cmap=cmapdata
    )

    **# Formatting**
    yticklabels = list(range(n_splits)) + ["class", "group"]
    axis.set(
        yticks=np.arange(n_splits + 2) + 0.5,
        yticklabels=yticklabels,
        xlabel="Sample index",
        ylabel="CV iteration",
        ylim=[n_splits + 2.2, -0.2],
        xlim=[0, 100],
    )
    axis.set_title("{}".format(type(cv).__name__), fontsize=15)
    return axis
fig, axis = plot.subplots()
cv = KFold(n_splits)
plot_cv_indices(cv, x, y, groups, axis, n_splits)

输出:

运行上述代码后,我们得到以下输出,其中我们可以看到屏幕上显示了 scikit learn 交叉验证分割。

scikit learn cross validation split

scikit learn cross-validation split

阅读: Scikit 学习功能选择

Scikit 学习交叉验证混淆矩阵

在本节中,我们将了解 Scikit learn 交叉验证矩阵如何在 python 中工作。

交叉验证混淆矩阵被定义为一个评估矩阵,从中我们可以估计模型的性能。

代码:

在下面的代码中,我们将导入一些库,从中我们可以评估模型性能。

  • iris = datasets . load _ iris()用于加载虹膜数据。
  • 打印(虹膜。【描述】(T1)用于打印虹膜数据。
  • predicted _ targets = num . array([])用于预测目标值模型。
  • actual _ targets = num . array([])用于获取实际目标值。
  • 分类器= svm。SVC()。fit(train _ x,train_y)用于拟合分类器。
  • predicted _ labels = classifiers . predict(test _ x)用于预测测试集的标签。
import matplotlib.pyplot as plot
import numpy as num
from sklearn import svm, datasets
from sklearn.metrics import confusion_matrix
from sklearn.model_selection import KFold
iris = datasets.load_iris()
data = iris.data
target = iris.target
classnames = iris.target_names
classnames
labels, counts = num.unique(target, return_counts=True)
print(iris.DESCR)
def evaluate_model(data_x, data_y):
    k_fold = KFold(10, shuffle=True, random_state=1)

    predicted_targets = num.array([])
    actual_targets = num.array([])

    for train_ix, test_ix in k_fold.split(data_x):
        train_x, train_y, test_x, test_y = data_x[train_ix], data_y[train_ix], data_x[test_ix], data_y[test_ix]

        classifiers = svm.SVC().fit(train_x, train_y)
        predicted_labels = classifiers.predict(test_x)

        predicted_targets = num.append(predicted_targets, predicted_labels)
        actual_targets = num.append(actual_targets, test_y)

    return predicted_targets, actual_targets 

scikit learn cross validation confusion matrix data

scikit learn cross-validation confusion matrix data

在这部分代码中,我们将生成规范化的混淆矩阵。

  • plot.imshow(cnf_matrix,interpolation='nearest ',cmap=plt.get_cmap('Blues')) 用于绘制矩阵。
  • plot.title(标题)用于在图形上绘制标题。
  • plot.xticks(tick_marks,classes,rotation=45) 用于绘制 x 刻度。
  • plot.ylabel('真实标签')用于在图形上绘制标签。
  • plot.xlabel('预测标签')用于在图形上绘制 x 标签。
  • plot _ confusion _ matrix(predicted _ target,actual_target) 用于在屏幕上绘制混淆矩阵。
def plot_confusion_matrix(predicted_labels_list, y_test_list):
    cnf_matrix = confusion_matrix(y_test_list, predicted_labels_list)
    num.set_printoptions(precision=2)

    plot.figure()
    generate_confusion_matrix(cnf_matrix, classes=class_names, normalize=True, title='Normalized confusion matrix')
    plot.show()
def generate_confusion_matrix(cnf_matrix, classes, normalize=False, title='Confusion matrix'):
    if normalize:
        cnf_matrix = cnf_matrix.astype('float') / cnf_matrix.sum(axis=1)[:, num.newaxis]
        print("Normalized confusion matrix")
    else:
        print('Confusion matrix, without normalization')

    plot.imshow(cnf_matrix, interpolation='nearest', cmap=plt.get_cmap('Blues'))
    plot.title(title)
    plot.colorbar()

    tick_marks = np.arange(len(classes))
    plot.xticks(tick_marks, classes, rotation=45)
    plot.yticks(tick_marks, classes)

    fmt = '.2f' if normalize else 'd'
    thresh = cnf_matrix.max() / 2.

    for i, j in itertools.product(range(cnf_matrix.shape[0]), range(cnf_matrix.shape[1])):
        plot.text(j, i, format(cnf_matrix[i, j], fmt), horizontalalignment="center",
                 color="black" if cnf_matrix[i, j] > thresh else "blue")

    plot.tight_layout()
    plot.ylabel('True label')
    plot.xlabel('Predicted label')

    return cnf_matrix
predicted_target, actual_target = evaluate_model(data, target)
plot_confusion_matrix(predicted_target, actual_target)

运行上述代码后,我们得到以下输出,其中我们可以看到屏幕上绘制的混淆矩阵,

scikit learn cross validation confusion matrix

scikit learn cross-validation confusion matrix

阅读: Scikit 学习线性回归+例题

Scikit 学习交叉验证超参数

在本节中,我们将了解 Scikit learn 交叉验证超参数在 python 中的工作原理。

交叉验证超参数定义为用于搜索理想模型架构的过程,也用于评估模型的性能。

代码:

在下面的代码中,我们将导入一些库,从中我们可以搜索理想的模型架构。

  • paramgrid = {'max_depth': [4,5,10],' min_samples_split': [3,5,10]} 用于定义 paramgrid。
  • x,y = make _ class ification(n _ samples = 1000,random_state=0) 用于进行分类。
  • base _ estimator = SVC(gamma = ' scale ')用于定义基本估计量。
  • sh = halvinggridsearchv(base _ estimator,paramgrid,cv=5,factor=2,max_resources=40,aggressive_elimination=True,)。fit(x,y)用于拟合模型。
from sklearn.datasets import make_classification
from sklearn.ensemble import RandomForestClassifier
from sklearn.experimental import enable_halving_search_cv  
from sklearn.model_selection import HalvingGridSearchCV
import pandas as pd
paramgrid = {'max_depth': [4, 5, 10],
               'min_samples_split': [3, 5, 10]}
base_estimator = RandomForestClassifier(random_state=0)
x, y = make_classification(n_samples=1000, random_state=0)
sh = HalvingGridSearchCV(base_estimator, paramgrid, cv=6,
                          factor=2, resource='n_estimators',
                          max_resources=30).fit(x, y)
sh.best_estimator_
RandomForestClassifier(max_depth=5, n_estimators=24, random_state=0)
from sklearn.datasets import make_classification
from sklearn.svm import SVC
from sklearn.experimental import enable_halving_search_cv  
from sklearn.model_selection import HalvingGridSearchCV
import pandas as pds
paramgrid= {'kernel': ('linear', 'rbf'),
             'C': [2, 10, 100]}
base_estimator = SVC(gamma='scale')
x, y = make_classification(n_samples=1000)
sh = HalvingGridSearchCV(base_estimator, paramgrid, cv=6,
                          factor=2, min_resources=20).fit(x, y)
sh.n_resources_
sh = HalvingGridSearchCV(base_estimator, paramgrid, cv=5,
                         factor=2, min_resources='exhaust').fit(x, y)
sh.n_resources_
from sklearn.datasets import make_classification
from sklearn.svm import SVC
from sklearn.experimental import enable_halving_search_cv  
from sklearn.model_selection import HalvingGridSearchCV
import pandas as pds
paramgrid = {'kernel': ('linear', 'rbf'),
              'C': [2, 10, 100]}
base_estimator = SVC(gamma='scale')
x, y = make_classification(n_samples=1000)
sh = HalvingGridSearchCV(base_estimator, paramgrid, cv=6,
                         factor=2, max_resources=40,
                         aggressive_elimination=False).fit(x, y)
sh.n_resources_
sh = HalvingGridSearchCV(base_estimator, paramgrid, cv=5,
                           factor=2,
                           max_resources=40,
                           aggressive_elimination=True,
                           ).fit(x, y)
sh.n_resources_

输出:

在下面的输出中,我们可以看到 Scikit 学习交叉验证超参数,它选择屏幕上显示的理想模型。

scikit learn cross validation hyperparameter

Scikit learn cross-validation hyperparameter

阅读: Scikit 学习超参数调整

Scikit 学习交叉验证洗牌

在本节中,我们将学习 python 中的 scikit learn 交叉验证 shuffle works

交叉验证混洗被定义为用户生成训练和测试分割首先数据样本被混洗,然后被分割成训练和测试集。

代码:

在下面的代码中,我们将学习导入一些库,我们可以从中混洗数据,然后将数据分成训练和测试。

  • x = num.array([[1,2],[3,4],[1,2],[3,4]]) 用于生成数组。
  • kf = KFold(n_splits=2) 用于拆分数据。
  • print("TRAIN:",train_index," TEST:",test_index) 用于打印训练和测试数据。
import numpy as num
from sklearn.model_selection import KFold
x = num.array([[1, 2], [3, 4], [1, 2], [3, 4]])
y = num.array([1, 2, 3, 4])
kf = KFold(n_splits=2)
kf.get_n_splits(x)
print(kf)
for train_index, test_index in kf.split(x):
     print("TRAIN:", train_index, "TEST:", test_index)
     x_train, x_test = x[train_index], x[test_index]
     y_train, y_test = y[train_index], y[test_index]

输出:

运行上面的代码后,我们得到了下面的输出,我们可以看到,在此之后的数据洗牌将它分为训练和测试数据。

scikit learn cross validation shuffle

scikit learn cross-validation shuffle

阅读: Scikit 学习 hidden _ layer _ size

Scikit 学习交叉验证网格搜索

在本节中,我们将了解 Scikit 如何在 python 中学习交叉验证网格搜索工作

交叉验证网格搜索被定义为为所有参数化网格模型选择最佳参数的过程。

代码:

在下面的代码中,我们将导入一些库,从中我们可以从网格中选择最佳参数。

  • iris = datasets . load _ iris()用于加载 iris 数据集。
  • parameters = { ' kernel '😦' linear ',' rbf '),' C':[1,12]} 用于定义参数。
  • classifier.fit(iris.data,iris.target) 用于拟合模型。
  • 已排序(classifier.cv_results_。()【keys】用于对分类器进行排序。
from sklearn import svm, datasets
from sklearn.model_selection import GridSearchCV
iris = datasets.load_iris()
parameters = {'kernel':('linear', 'rbf'), 'C':[1, 12]}
svc = svm.SVC()
classifier = GridSearchCV(svc, parameters)
classifier.fit(iris.data, iris.target)
sorted(classifier.cv_results_.keys())

输出:

在下面的输出中,我们可以看到屏幕上显示了从参数网格中搜索到的最佳参数。

scikit learn cross validation grid search

scikit learn cross-validation grid search

另外,看看更多的 Scikit 学习教程。

因此,在本教程中,我们讨论了 Scikit learn 交叉验证,并且我们还涵盖了与其实现相关的不同示例。这是我们已经讨论过的例子列表。

  • Scikit 学习交叉验证
  • Scikit 学习交叉验证分数
  • Scikit 学习交叉验证套索
  • Scikit 学习交叉验证预测
  • Scikit 学习交叉验证时间序列
  • Scikit 学习交叉验证分离
  • Scikit 学习交叉验证混淆矩阵
  • Scikit 学习交叉验证超参数
  • Scikit 学习交叉验证混洗
  • Scikit 学习交叉验证网格搜索

Bijay Kumar MVPBijay Kumar

Python 是美国最流行的语言之一。我从事 Python 工作已经有很长时间了,我在与 Tkinter、Pandas、NumPy、Turtle、Django、Matplotlib、Tensorflow、Scipy、Scikit-Learn 等各种库合作方面拥有专业知识。我有与美国、加拿大、英国、澳大利亚、新西兰等国家的各种客户合作的经验。查看我的个人资料。

enjoysharepoint.com/

Scikit 学习决策树

原文:https://pythonguides.com/scikit-learn-decision-tree/

Python & Machine Learning training courses

在这个 Python 教程中,我们将学习如何用 Python 创建一个 scikit learn 决策树,我们还将涵盖与决策树相关的不同示例。此外,我们将涵盖这些主题。

  • Scikit 学习决策树
  • Scikit 学习决策树分类器
  • Scikit 学习决策树分类器示例
  • Scikit 学习决策树回归器
  • Scikit 学习决策树可视化
  • Scikit 学习决策树修剪
  • Scikit 学习决策树分类
  • Scikit 学习决策树准确性

目录

Scikit 学习决策树

在本节中,我们将学习如何在 python 中制作 scikit-learn 决策树

  • 决策树是一个类似流程图的树结构,它由分支组成,每个分支代表一个决策规则。树的分支被称为节点。
  • 我们有一个分割过程,将节点分割成子节点。决策树的最顶层节点被称为根节点。
  • 有些线将节点分成子节点,子节点甚至被分成偶数个子节点,然后初始子节点称为决策节点。
  • 不再分裂的节点称为叶节点或终端节点。整个树的子部分被称为分支或子树。
  • 我们也可以称该节点为父节点和子节点。被分成子节点的节点被称为父节点,子节点被称为父节点的子节点。

Scikit learn decision tree

Scikit learn decision tree

正如我们在上面的图片中看到的,节点被分割成子节点。我们还可以在决策树中选择最佳分割点。

  • 决策树分割所有可用变量上的节点。
  • 选择产生最相似子节点的拆分。
  • 决策树的时间复杂度是给定数据中记录数和属性数的方法。
  • 决策树是一种不依赖于概率分布的非参数方法。

另外,检查: Scikit-learn 逻辑回归

Scikit 学习决策树分类器

在本节中,我们将学习如何用 python 创建 scikit learn 决策树分类器。

  • 决策树用于预测值,并且是用于分类和回归的非参数监督学习方法。

  • 决策树分类器是可用于对数据集执行多类分类的类。

  • 决策树分类器接受两个数组的输入,如数组 X 和数组 Y。数组 X 保存训练样本,数组 Y 保存训练样本。

  • 决策树分类器支持二元分类以及多类分类。

代码:

在下面的代码中,我们将从 sklearn 库加载虹膜数据,并从 sklearn 导入树。

  • load_iris() 用于加载数据集。
  • X,Y = iris.data,iris.target 用于训练数据和测试数据。
  • 树。决策树分类器()用于制作决策树分类器。
  • 树。DecisionTreeClassifier() 用于将数据放入树中。
  • tree . plot _ tree(clasifier)用于在屏幕上绘制决策树。
from sklearn.datasets import load_iris
from sklearn import tree
iris = load_iris()
X, Y = iris.data, iris.target
clasifier = tree.DecisionTreeClassifier()
clasifier = clasifier.fit(X, Y)
tree.plot_tree(clasifier)

输出:

运行上面的代码后,我们得到下面的输出,可以看到屏幕上绘制了决策树。

scikit learn decision tree classifier

scikit learn decision tree classifier

Read: Scikit-learn Vs Tensorflow

Scikit 学习决策树分类器示例

在本节中,我们将学习如何用 Python 制作一个 scikit learn 决策树示例。

  • 我们知道决策树是用来预测价值的,它是非参数的监督学习。
  • 决策树分类器接受两个数组的输入,如数组 X 和数组 Y。数组 X 保存训练样本,数组 Y 保存训练样本。

举例:

在下面的例子中,我们将导入 graphviz 库。Graphviz 被定义为用于创建图表的开源模块。

  • tree.export_graphviz(clf,out_file=None) 用于在屏幕上创建树形图。
  • tree.export_graphviz() 用于在树形图内部添加一些变量。
  • graphviz。source(dot data)用于从数据源获取数据。
import graphviz 
dotdata = tree.export_graphviz(clf, out_file=None) 
graphs = graphviz.Source(dotdata) 
graphs.render("iris")
dotdata = tree.export_graphviz(clf, out_file=None, 
                     feature_names=iris.feature_names,  
                     class_names=iris.target_names,  
                     filled=True, rounded=True,  
                     special_characters=True)  
graphs = graphviz.Source(dotdata)  
graphs 

输出:

运行上面的代码后,我们得到了下面的输出,从中我们可以看到在 Graphviz 的帮助下绘制了一个决策树图。

Scikit learn decision tree classifier example

Scikit learn decision tree classifier example

读取 Scikit 学习准确度 _ 分数

Scikit 学习决策树回归器

在继续之前,我们应该了解一些关于回归变量的知识。

  • 在 Regressor 中,我们只是预测值,或者我们可以说它是一种研究自变量和因变量之间关系的建模技术。
  • 在回归分析中,我们有因变量和自变量。这里,因变量作为响应,自变量作为特征。
  • 回归变量有助于我们理解因变量的值相对于自变量是如何变化的。

代码:

在下面的代码中,我们将导入一些库 import numy 作为 np ,从 sklearn.tree 中导入来自 import DecisionTreeRegressor ,从中导入 matplotlib.pyplot 作为 plot。

  • np.random.RandomState(1) 用于创建随机数据集。
  • regression_1.fit(X,y) 用于填充回归模型。
  • regression _ 1 . predict(X _ test)用于预测数据。
  • plot.figure() 用于绘制图形。
  • plot.xlabel("data") 用于绘制图形上的 x 标签。
  • plot.ylabel("target") 用于在图形上绘制 y 标签。
  • plot.title("决策树回归")用来给图加标题。
import numpy as np
from sklearn.tree import DecisionTreeRegressor
import matplotlib.pyplot as plot

range = np.random.RandomState(1)
X = np.sort(5 * range.rand(80, 1), axis=0)
Y = np.sin(X).ravel()
Y[::5] += 3 * (0.5 - range.rand(16))

regression_1 = DecisionTreeRegressor(max_depth=2)
regression_2 = DecisionTreeRegressor(max_depth=5)
regression_1.fit(X, y)
regression_2.fit(X, y)

X_test = np.arange(0.0, 5.0, 0.01)[:, np.newaxis]
Y1 = regression_1.predict(X_test)
Y2 = regression_2.predict(X_test)

plot.figure()
plot.scatter(X, y, s=20, edgecolor="black", c="pink", label="data")
plot.plot(X_test, Y1, color="blue", label="max_depth=4", linewidth=2)
plot.plot(X_test, Y2, color="green", label="max_depth=7", linewidth=2)
plot.xlabel("data")
plot.ylabel("target")
plot.title("Decision Tree Regression")
plot.legend()
plot.show()

输出:

运行上面的代码后,我们得到了下面的输出,从中我们可以看到绘制了决策树回归器。绿色的线是实际数据,虚线是我们的预测数据。

scikit learn decision tree regressor

scikit learn decision tree regressor

阅读 Scikit 了解层次聚类

Scikit 学习决策树可视化

在本节中,我们将了解如何让 scikit 学习 python 中的决策树可视化

在前进之前,我们应该有一些关于视觉化的知识。

  • 可视化被定义为将大型数据集转换为图形、图表或树的形式的过程。
  • 决策树可视化还将大量数据转换成用户可以更好地理解的树形格式。
  • 决策树可视化使用 sklearn 树方法 Plot_tree.sklearn IRIS 数据集完成。

代码:

在下面的代码中,我们将导入一些库 import matplotlib.pyplot 作为 plot ,sklearn 导入数据集中的,sklearn.model_selection 导入 train_test_split ,sklearn.tree 导入决策树分类器中的

  • iris = datasets . load _ iris()用于加载 iris 数据集。
  • X_train,X_test,Y_train,Y_test = train_test_split(X,Y,test_size=0.5,random_state=1,strategy = Y)用于创建训练或测试数据集。
  • classifier _ tree = DecisionTreeClassifier(criteria = ' Gini ',max_depth=6,random_state=1) 用于使用 decision tree classifier 训练模型。
  • tree . plot _ tree(classifier _ tree,fontsize=12) 用于绘制决策树。
import matplotlib.pyplot as plot
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
from sklearn import tree

iris = datasets.load_iris()
X = iris.data[:, 2:]
Y = iris.target

X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size=0.5, random_state=1, stratify=Y)

classifier_tree = DecisionTreeClassifier(criterion='gini', max_depth=6, random_state=1)
classifier_tree.fit(X_train, Y_train)

figure, axis = plot.subplots(figsize=(12, 12))
tree.plot_tree(classifier_tree, fontsize=12)
plot.show()

输出:

运行上述代码后,我们得到以下输出,其中我们可以看到屏幕上绘制了 scikit learn 决策树可视化。

Scikit learn decision tree visualization

Scikit learn decision tree visualization

阅读: Scikit 学习隐马尔可夫模型

Scikit 学习决策树剪枝

在这一节中,我们将了解如何让 scikit 学习 python 中的决策树双关语

剪枝被定义为一种数据压缩技术,其中数据正在收缩,并且决策树算法的大小通过仅移除树的一部分来减小。

代码:

在下面的代码中,我们导入一些库导入 matplotlib.pyplot 为 plt来自 sklearn.model _ selction 导入 train_test_split来自 sklearn.tree 导入 load_breast cancer。

  • load _ breast _ cancer(return _ X _ y = True)用于加载乳腺癌的数据。
  • X_train,X_test,y_train,y_test = train_test_split(X,y,random_state=0) 用于拆分训练和测试数据。
  • 决策树分类器(random_state=0 ) 用于绘制决策树分类器的随机状态。
  • axis . plot(CCP _ 阿尔法斯[:-1],杂质[:-1],marker="o ",drawstyle="steps-post") 用于绘制轴。
  • axis.set_xlabel("有效 alpha") 用于给图加 x 标签。
  • axis.set_ylabel(“叶子的总杂质”)用于为图表提供 y 标签。
  • axis.set_title("总杂质 vs 训练集的有效α")用于给图加标题。
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.datasets import load_breast_cancer
from sklearn.tree import DecisionTreeClassifier
X, y = load_breast_cancer(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=0)

clasifier = DecisionTreeClassifier(random_state=0)
path = clasifier.cost_complexity_pruning_path(X_train, y_train)
ccp_alphas, impurities = path.ccp_alphas, path.impurities
fig, axis = plt.subplots()
axis.plot(ccp_alphas[:-1], impurities[:-1], marker="o", drawstyle="steps-post")
axis.set_xlabel("Effective alpha")
axis.set_ylabel("Total impurity of leaves")
axis.set_title("Total Impurity vs effective alpha for training set")

输出:

运行上面的代码后,我们得到下面的输出,其中我们可以看到叶子的总杂质。

scikit learn decision tree punning

scikit learn decision tree punning

另外,检查: Scikit 学习随机森林

Scikit 学习决策树分类

在这一节中,我们将了解如何让 scikit 学习 Python 中的决策树分类

  • 分类是与分类变量等价的数据类型。它需要固定数量的可能值。
  • 分类变量可以将变量分成不同的类别,例如性别、类型、类别,

代码:

在下面的代码中,我们将从 matplotlib 导入 pyplot 作为 plt,从 sklearn 导入数据集导入一些 librarie s ,从 sklearn.tree 导入决策树分类器。****

  • 我们可以从虹膜数据集中收集数据,并将数据分类。
  • tree.plot_tree(clf,feature _ names = iris . feature _ names,class_names=iris.target_names,filled=True) 用于在屏幕上绘制数据。
from matplotlib import pyplot as plt
from sklearn import datasets
from sklearn.tree import DecisionTreeClassifier 
from sklearn import tree
iris = datasets.load_iris()
X = iris.data
y = iris.target
fig = plt.figure(figsize=(25,20))
_ = tree.plot_tree(clf, 
                   feature_names=iris.feature_names,  
                   class_names=iris.target_names,
                   filled=True)

输出:

运行上述代码后,我们得到以下输出,从中我们可以看到数据被分成了不同的类别。

scikit-learn decision tree categorical

scikit-learn decision tree categorical

阅读: Scikit 学习线性回归

Scikit 学习决策树准确性

在这一节中,我们将学习如何在 python 中使 scikit 决策树精确化。

  • 精度用于测量模型在测量真阳性和真阴性之和时的性能。
  • 准确度被定义为正确分类的案例数占被评估案例总数的比例。

代码:

在下面的代码中,我们将导入一些库来查找决策树的准确性。

data = PD . read _ CSV(" diabetes . CSV ",header=None,names=col_names) 用于从数据集读取数据。

import pandas as pd
from sklearn.tree import DecisionTreeClassifier 
from sklearn.model_selection import train_test_split  
from sklearn import metrics 
 col_names = ['pregnant', 'glucose', 'bp', 'skin', 'insulin', 'bmi', 'pedigree', 'age', 'label']

data = pd.read_csv("diabetes.csv", header=None, names=col_names)

data.head()函数中,我们得到了数据集的前五行。

data.head()

如图所示,我们从 data.head() 函数的数据集中获取前五行。

scikit learn decision tree accuracy dataset

在下面的代码中,我们将数据和目标变量分开以获得准确性。

print("Accuracy:",metrics.accuracy_score(y_train,y_pred)) 用于打印屏幕上数据的精度。

 feature_cols = ['pregnant', 'insulin', 'bmi', 'age','glucose','bp','pedigree']
X = data[feature_cols] 
y = data.label 

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=1) 
clf = DecisionTreeClassifier()

clf = clf.fit(X_train,y_train)

y_pred = clf.predict(X_train)

print("Accuracy:",metrics.accuracy_score(y_train, y_pred))

运行上面的代码后,我们得到下面的输出,从中我们可以看到模型的准确性。

scikit learn decision tree accuracy

scikit learn decision tree accuracy

您可能还想阅读以下 Scikit 学习教程。

因此,在本教程中,我们讨论了 Scikit learn 决策树,并且我们还涵盖了与其实现相关的不同示例。这是我们已经讨论过的例子列表。

  • Scikit 学习决策树
  • Scikit 学习决策树分类器
  • Scikit 学习决策树分类器示例
  • Scikit 学习决策树回归器
  • Scikit 学习决策树可视化
  • Scikit 学习决策树修剪
  • Scikit 学习决策树分类
  • Scikit 学习决策树准确性

Bijay Kumar MVPBijay Kumar

Python 是美国最流行的语言之一。我从事 Python 工作已经有很长时间了,我在与 Tkinter、Pandas、NumPy、Turtle、Django、Matplotlib、Tensorflow、Scipy、Scikit-Learn 等各种库合作方面拥有专业知识。我有与美国、加拿大、英国、澳大利亚、新西兰等国家的各种客户合作的经验。查看我的个人资料。

enjoysharepoint.com/

Scikit 学习功能选择

原文:https://pythonguides.com/scikit-learn-feature-selection/

Python & Machine Learning training courses

在这个 Python 教程中,我们将学习 python 中的 Scikit learn 特性选择,我们还将涵盖与特性选择相关的不同示例。我们将讨论这些话题。

  • Scikit 学习功能选择
  • Scikit 学习功能选择管道
  • Scikit 学习功能选择 chi2
  • Scikit 学习功能选择 rfe
  • Scikit 学习功能选择选择测试
  • Scikit 学习基于特征选择树估计器
  • Scikit 学习特征选择分类
  • Scikit 学习特征选择交互信息
  • Scikit 学习功能选择 PCA

目录

Scikit 学习功能选择

在本节中,我们将了解scikit 如何在 Python 中学习特性选择工作

  • 当我们开发预测模型时使用特征选择,它用于减少输入变量的数量。
  • 它还参与评估每个输入变量和目标变量之间的关系。

代码:

在下面的代码中,我们将从 sklearn.feature_selection 导入 varianceThreshold ,我们可以从中选择特性。

此外,select = variance threshold(threshold =(. 8 *(1-. 8)))用于计算来自特征选择的方差阈值。

from sklearn.feature_selection import VarianceThreshold
X = [[0, 0, 1], [0, 1, 0], [1, 0, 0], [0, 1, 1], [0, 1, 0], [0, 1, 1]]
select = VarianceThreshold(threshold=(.8 * (1 - .8)))
select.fit_transform(X)

输出:

运行上述代码后,我们得到以下输出,从中我们可以看到方差阈值删除了所有样本中具有相同值的所有零方差特征。

scikit learn feature selection

scikit learn feature selection

另外,请阅读: Scikit-learn Vs Tensorflow

Scikit 学习功能选择管道

在本节中,我们将了解 Python 中的 Scikit 学习特性选择管道工作

流水线被线性地用于应用一系列语句。它用于删除训练集中一些不太重要的特征,还用于选择提高模型准确性的最佳特征。

代码:

在下面的代码中,我们将从 sklearn.pipeline 导入管道。流水线用于移除一些不太重要的特征,并且还选择提高准确度的最佳特征。

  • pipeline.fit(x_train,y_train) 用于避免测试集泄露到训练集中。
  • pipeline.score(x_test,y_test) 用于计算模型的得分。
from sklearn.svm import SVC
from sklearn.preprocessing import StandardScaler
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split
from sklearn.pipeline import Pipeline
x, y = make_classification(random_state=0)
x_train, x_test, y_train, y_test = train_test_split(x, y,random_state=0)
pipeline = Pipeline([('scaler', StandardScaler()), ('svc', SVC())])

pipeline.fit(x_train, y_train)
Pipeline(steps=[('scaler', StandardScaler()), ('svc', SVC())])
pipeline.score(x_test, y_test)

输出:

运行上述代码后,我们得到以下输出,从中我们可以看到屏幕上显示了模型通过管道得到的改进的准确性分数。

scikit learn feature selection pipeline

scikit learn feature selection pipeline

阅读: Scikit-learn 逻辑回归

Scikit 学习功能选择 chi2

在这一节中,我们将了解scikit 如何在 python 中学习特性选择 chi2 的工作方式

Chi2 检验用于测量非线性变量之间的相关性。它只包含非负变量,如布尔或频率。

代码:

在下面的代码中,我们将从 sklearn.feature_selection 导入 chi2,它测量非线性变量之间的依赖关系。

  • X,y = load _ iris(return _ X _ y = True)用于从 iris 加载数据。
  • X.shape 用于管理数据的形状。
from sklearn.datasets import load_iris
from sklearn.feature_selection import chi2
X, y = load_iris(return_X_y=True)
X.shape

输出:

运行上面的代码后,我们得到下面的输出,我们可以看到非线性变量被打印在屏幕上。

scikit learn feature selection chi2

scikit learn feature selection chi2

阅读: Scikit 学习决策树

Scikit 学习特性选择 rfe

在这一节中,我们将了解scikit 如何在 python 中学习特征选择 RFE 工作

RFE 意味着递归特征消除,即给一个特征分配权重。递归特征消除的目标是选择较小的特征集。

代码:

在下面的代码中,我们将从 sklearn.feature_selection 导入 RFE,通过它我们可以选择较小的功能集。

  • digits = load_digits() 用于加载数字数据集。
  • recursivefeatureelimination = RFE(estimator = SVC,n_features_to_select=1,step=1) 用于创建 RFE 对象,并对每个像素进行排序。
  • plot.title("用 RFE 排列像素")用来给窗口加标题。
from sklearn.svm import SVC
from sklearn.datasets import load_digits
from sklearn.feature_selection import RFE
import matplotlib.pyplot as plot

digits = load_digits()
X = digits.images.reshape((len(digits.images), -1))
y = digits.target

svc = SVC(kernel="linear", C=1)
recursivefeatureelimination = RFE(estimator=svc, n_features_to_select=1, step=1)
recursivefeatureelimination.fit(X, y)
ranking = recursivefeatureelimination.ranking_.reshape(digits.images[0].shape)

plot.matshow(ranking, cmap=plot.cm.Blues)
plot.colorbar()
plot.title("Ranking of pixels with RFE")
plot.show()

输出:

运行上面的代码后,我们得到了下面的输出,我们可以看到像素 RFE 的排名绘制在屏幕上。

scikit learn feature selection RFE

scikit learn feature selection RFE

阅读: Scikit 学习准确度 _ 分数

Scikit 学习功能选择 selectkbest

在接下来的章节中,我们将了解Scikit 如何学习特性选择 selectKbest 在 Python 中的工作

  • 在前进之前,我们应该有一个选择最佳的知识。
  • 选择最佳是从给定数据集提取最佳特征的过程。它可以根据 K 个最高分来选择特征。

代码:

在下面的代码中,我们将从 sklearn.feature_selection 导入 SelectkBest,通过它我们可以提取数据集的最佳特征。

  • 从 sklearn.datasets 导入 load_iris 用于加载 iris 数据集,我们可以从中收集数据。
  • X_new = SelectKBest(chi2,k=2)。fit_transform(X,y) 用于提取数据集的最佳特征。
from sklearn.datasets import load_iris
from sklearn.feature_selection import SelectKBest
X_new = SelectKBest(chi2, k=2).fit_transform(X, y)
X_new.shape
from sklearn.datasets import load_iris
from sklearn.feature_selection import SelectKBest
X_new = SelectKBest(chi2, k=2).fit_transform(X, y)
X_new.shape

输出:

运行上面的代码后,我们得到下面的输出,其中我们可以看到 SelectkBest 进程开始工作,并用于提取数据集的最佳特征。

scikit learn feature selection SelectkBest

scikit learn feature selection SelectkBest

阅读: Scikit 学习层次聚类

Scikit 学习基于特征选择树的估计器

在本节中,我们将了解 Scikit 如何在 Python 中学习基于特征选择树的工作

基于树的估计器用于确定基于杂质的特征重要性,这又可用于消除不重要的特征。

代码:

在下面的代码中,我们将从 sklearn.esemble 导入 ExtraTreesClassifier,通过它我们可以确定特征的杂质。

from sklearn.ensemble import ExtraTreesClassifier
from sklearn.datasets import load_iris
from sklearn.feature_selection import SelectFromModel
X, y = load_iris(return_X_y=True)
X.shape

运行上面的代码后,我们得到下面的输出,我们可以看到树分类器的形状打印在屏幕上。

scikit learn feature selection tree  based-

scikit learn feature selection tree-based

在这里,我们可以估计特征的重要性,即树的特征有多重要。

clf = ExtraTreesClassifier(n_estimators=50)
clf = clf.fit(X, y)
clf.feature_importances_ 

scikit learn feature selection tree based estimator

scikit learn feature selection tree-based estimator

在这里,我们可以看到额外的基于树的估计器取消了不重要的特征,并确定了基于杂质的特征。

model = SelectFromModel(clf, prefit=True)
X_new = model.transform(X)
X_new.shape 

scikit learn feature selection tree based

scikit learn feature selection tree-based

阅读: Scikit 学习隐马尔可夫模型

Scikit 学习特征选择分类

在本节中,我们将学习 Python 中的 Scikit 学习特征选择分类

分类是监督学习,用于将不同的事物分类。

代码:

在下面的代码中,我们将导入不同的库,从中我们可以选择不同分类器的特性。

  • x,y = load _ iris(return _ X _ y = True)用于加载 iris 数据集。
  • SequentialFeatureSelector = SequentialFeatureSelector(KNN,n_features_to_select=3) 用于选择分类器的特征。
from sklearn.feature_selection import SequentialFeatureSelector
from sklearn.neighbors import KNeighborsClassifier
from sklearn.datasets import load_iris
x, y = load_iris(return_X_y=True)
knn = KNeighborsClassifier(n_neighbors=3)
sequentialfeatureselector = SequentialFeatureSelector(knn, n_features_to_select=3)
sequentialfeatureselector.fit(x, y)

输出:

运行上面的程序后,我们得到下面的输出,从中我们可以看到屏幕上的特征选择分类已经完成。

scikit learn feature selection classification

scikit learn feature selection classification

阅读: Scikit 学习岭回归

Scikit 学习特征选择交互信息

在本节中,我们将了解 Scikit 如何在 python 中学习特征选择交互 信息

互信息用于度量变量之间的相关性。如果两个随机变量是独立的,则互信息等于零。

代码:

在下面的代码中,我们将**从**sk learn . feature _ selection导入 f_regression,mutual_info_regression,通过它我们可以从交互信息中选择一个特征。

  • mutual info = mutual _ info _ regression(x,y) 用于获取互信息。
  • plot.figure(figsize=(15,5)) 用于在屏幕上绘制图形。
  • plot.scatter(x[:,i],y,edgecolor="black ",s=20) 用于绘制散点图。
  • plot.title("F-test={:.2f},MI={:.2f} "。format(f_test[i],mutualinfo[i]),fontsize=16) 用于给图赋予标题。
import numpy as np
import matplotlib.pyplot as plot
from sklearn.feature_selection import f_regression, mutual_info_regression

np.random.seed(0)
x = np.random.rand(1000, 3)
y = x[:, 0] + np.sin(6 * np.pi * x[:, 1]) + 0.1 * np.random.randn(1000)

f_test, _ = f_regression(x, y)
f_test /= np.max(f_test)

mutualinfo = mutual_info_regression(x, y)
mutualinfo /= np.max(mutualinfo)

plot.figure(figsize=(15, 5))
for i in range(3):
    plot.subplot(1, 3, i + 1)
    plot.scatter(x[:, i], y, edgecolor="black", s=20)
    plot.xlabel("$x_{}$".format(i + 1), fontsize=14)
    if i == 0:
        plot.ylabel("$y$", fontsize=14)
    plot.title("F-test={:.2f}, MI={:.2f}".format(f_test[i], mutualinfo[i]), fontsize=16)
plot.show()

输出:

运行上面的代码后,我们得到下面的输出,我们可以看到散点图绘制在屏幕上。

scikit learn feature selection mutual information

scikit learn feature selection mutual information

阅读: Scikit 学习随机森林

Scikit 学习特征选择 PCA

在本节中,我们将了解Scikit 如何在 Python 中学习特性选择

  • 在继续之前,我们应该了解一些关于 Scikit learn PCA 的知识。
  • PCA 代表主成分分析,其被用作使用数据的奇异值分解的线性维度。

代码:

在下面的代码中,我们将从 sklearn.decomposition 导入 PCA,通过它我们可以选择特性。

  • dataseturl = " https://raw . githubusercontent . com/jbrownlee/Datasets/master/pima-Indians-diabetes . CSV "用于加载数据集。
  • datanames = ['preg ',' plas ',' pres ',' skin ',' test ',' mass ',' pedi ',' age ',' class'] 即从数据集中给出名称。
  • PCA(n_components=3) 用于提取特征。
  • print("解释的差异:% s " % fit . Explained _ Variance _ ratio _)用于在屏幕上打印差异。
import numpy
from pandas import read_csv
from sklearn.decomposition import PCA

dataseturl = "https://raw.githubusercontent.com/jbrownlee/Datasets/master/pima-indians-diabetes.csv"
datanames = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class']
dataframe = read_csv(dataseturl, names=datanames)
array = dataframe.values
x = array[:,0:7]
y = array[:,7]

pca = PCA(n_components=3)
fit = pca.fit(x)

print("Explained Variance: %s" % fit.explained_variance_ratio_)
print(fit.components_)

输出:

运行上面的代码后,我们得到下面的输出,我们可以看到差异被打印在屏幕上。

scikit learn feature selection PCA

scikit learn feature selection PCA

另外,看看更多的 scikit 学习教程。

因此,在本教程中,我们讨论了 Scikit 学习功能选择,并且我们还涵盖了与其实现相关的不同示例。这是我们已经讨论过的例子列表。

  • Scikit 学习功能选择
  • Scikit 学习功能选择管道
  • Scikit 学习功能选择 chi2
  • Scikit 学习功能选择 rfe
  • Scikit 学习功能选择选择测试
  • Scikit 学习基于特征选择树估计器
  • Scikit 学习特征选择分类
  • Scikit 学习特征选择交互信息
  • Scikit 学习功能选择 PCA

Bijay Kumar MVPBijay Kumar

Python 是美国最流行的语言之一。我从事 Python 工作已经有很长时间了,我在与 Tkinter、Pandas、NumPy、Turtle、Django、Matplotlib、Tensorflow、Scipy、Scikit-Learn 等各种库合作方面拥有专业知识。我有与美国、加拿大、英国、澳大利亚、新西兰等国家的各种客户合作的经验。查看我的个人资料。

enjoysharepoint.com/

Scikit 了解高斯–您需要知道的一切

原文:https://pythonguides.com/scikit-learn-gaussian/

Python & Machine Learning training courses

在这个 Python 教程中,我们将学习 Scikit 学习高斯如何在 Python 中工作,我们还将涵盖与 Scikit 学习高斯相关的不同示例。我们将讨论这些话题。

  • Scikit 学习高斯
  • Scikit 学习高斯混合模型
  • Scikit 学习高斯过程
  • Scikit 学习高斯回归
  • Scikit 学习高斯回归示例
  • Scikit 学习高斯朴素贝叶斯
  • Scikit 学习高斯内核
  • Scikit 学习高斯分类器
  • Scikit 学习高斯过程分类器
  • Scikit 学习高斯过程 RBF 核

在继续本教程之前,我们建议您阅读一下什么是 Python 中的 Scikit Learn

目录

Scikit 学习高斯

在这一节中,我们将了解Scikit 如何在 python 中学习高斯函数

  • Scikit learn Gaussian 是一个有监督的机器学习模型。它用于解决回归和分类问题。
  • 高斯过程也被定义为具有多元分布的随机变量的有限群。

代码:

在下面的代码中,我们将导入一些可以解决回归问题的库。

  • X = num.linspace(start=0,stop=12,num=1_000)。整形(-1,1) 用于创建一个行空间。
  • plot.plot(X,Y,label=r"\(f(x) = x \sin(x)\) ",linestyle="dotted") 用于在屏幕上绘制图形。
  • plot.xlabel("\(x\)") 用于绘制 xlabel。
  • plot.ylabel("\(f(x)\)") 用于绘制 y 标签。
  • 高斯= plot.title("真生成过程")用于给图加标题。
import numpy as num

X = num.linspace(start=0, stop=12, num=1_000).reshape(-1, 1)
Y = num.squeeze(X * num.sin(X))
import matplotlib.pyplot as plot

plot.plot(X, Y, label=r"$f(x) = x \sin(x)$", linestyle="dotted")
plot.legend()
plot.xlabel("$x$")
plot.ylabel("$f(x)$")
Gaussian = plot.title("True Generative Process")

Scikit learn Guassian true generative process

Scikit learn Gaussian true generative process

  • range = num . random . random state(1)用于生成随机数。
  • X_train,Y _ train = X[training _ indexes],Y[training _ indexes]用于创建训练和测试数据。
  • gaussianprocess.fit(X_train,Y_train) 用于拟合模型。
  • plot.plot(X,Y,label=r"\(f(x) = x \sin(x)\) ",linestyle="dotted" )用于绘制图形。
  • plot.scatter(X_train,Y_train,label="Observations") 用于绘制散点图。
  • plot.xlabel("\(x\)") 用于绘制 x 标签。
  • plot.ylabel("\(f(x)\)") 用于绘制 y 标签。
  • plot.title("无噪声数据集上的高斯过程回归")用于给图加标题。
range = num.random.RandomState(1)
training_indices = range.choice(num.arange(Y.size), size=8, replace=False)
X_train, Y_train = X[training_indices], Y[training_indices]
from sklearn.gaussian_process import GaussianProcessRegressor
from sklearn.gaussian_process.kernels import RBF

kernel = 1 * RBF(length_scale=1.0, length_scale_bounds=(1e-2, 1e2))
gaussianprocess = GaussianProcessRegressor(kernel=kernel, n_restarts_optimizer=9)
gaussianprocess.fit(X_train, Y_train)
gaussianprocess.kernel_
mean_prediction, std_prediction = gaussian_process.predict(X, return_std=True)

plot.plot(X, Y, label=r"$f(x) = x \sin(x)$", linestyle="dotted")
plot.scatter(X_train, Y_train, label="Observations")
plot.plot(X, mean_prediction, label="Mean Prediction")
plot.fill_between(
    X.ravel(),
    mean_prediction - 1.98 * std_prediction,
    mean_prediction + 1.98 * std_prediction,
    alpha=0.7,
    label=r"95% confidence interval",
)
plot.legend()
plot.xlabel("$x$")
plot.ylabel("$f(x)$")
Gaussian = plot.title("Gaussian Process Regression on noise-free dataset")

运行上述代码后,我们得到以下输出,其中我们可以看到无噪声数据集上的高斯过程回归。

Scikit learn Gaussian

Scikit learn Gaussian

另外,检查: Scikit-learn 逻辑回归

Scikit 学习高斯混合模型

在本节中,我们将了解Scikit 如何在 python 中学习高斯混合模型的工作方式

  • Scikit 学习高斯混合模型用于定义表示高斯模型概率分布的过程。
  • 高斯混合也允许评估模型的参数。

代码:

在下面的代码中,我们将导入一些代表高斯模型概率分布的库。

  • num.random.seed(0) 用于生成两个分量的随机样本。
  • shiftedgaussian = num . random . randn(n _ samples,2) + num.array([25,25]) 用于生成球面数据。
  • stretchedgaussian = num . dot(num . random . randn(n _ samples,2),c) 用于生成以零为中心的拉伸高斯数据。
  • X _ train = num . v stack([shiftedgaussian,stretchedgaussian]) 用于将两个数据集集中到最终的训练集中。
  • 分类器=混合物。GaussianMixture(n_components=2,协方差 _type="full") 用于拟合具有两个分量的高斯混合模型。
  • cs=plot.contour(X,Y,Z,norm=LogNorm(vmin=2.0,vmax=1000.0),levels=num.logspace(0,3,10) ) 用于预测分数作为反标绘。
  • plot.scatter(X_train[:,0],X_train[:,1],0.10) 用于绘制散点图。
  • plot.title("高斯混合法预测的负对数似然")用于在图上标出标题。
  • plot.axis("紧")用于在图形上绘制轴。
import numpy as num
import matplotlib.pyplot as plot
from matplotlib.colors import LogNorm
from sklearn import mixture

n_samples = 350

num.random.seed(0)

shiftedgaussian = num.random.randn(n_samples, 2) + num.array([25, 25])

c = num.array([[0.0, -0.9], [3.5, 0.9]])
stretchedgaussian = num.dot(num.random.randn(n_samples, 2), c)

X_train = num.vstack([shiftedgaussian, stretchedgaussian])

classifier = mixture.GaussianMixture(n_components=2, covariance_type="full")
classifier.fit(X_train)

x = num.linspace(-25.0, 35.0)
y = num.linspace(-25.0, 45.0)
X, Y = num.meshgrid(x, y)
XX = num.array([X.ravel(), Y.ravel()]).T
Z = -classifier.score_samples(XX)
Z = Z.reshape(X.shape)

cs = plot.contour(
    X, Y, Z, norm=LogNorm(vmin=2.0, vmax=1000.0), levels=num.logspace(0, 3, 10)
)
cb = plot.colorbar(cs, shrink=0.10, extend="both")
plot.scatter(X_train[:, 0], X_train[:, 1], 0.10)

plot.title("Negative log-likelihood predicted by a Gaussian Mixture Method")
plot.axis("tight")
plot.show()

输出:

运行上面的代码后,我们得到下面的输出,其中我们可以看到高斯混合方法是基于屏幕的。

Scikit learn Gaussian mixture model

Scikit learn Gaussian mixture model

阅读: Scikit 学习隐马尔可夫模型

Scikit 学习高斯过程

在本节中,我们将了解Scikit 如何在 python 中学习高斯过程的工作方式

  • Scikit learn Gaussian processes 可用于回归和分类,在此帮助下,我们可以创建离散数据结构。
  • 离散数据结构被定义为离散形式的数据。

代码:

在下面的代码中,我们将导入一些库,在高斯过程的帮助下,我们可以从中创建一个离散的数据结构。

  • self . baseline _ similarity _ bounds = baseline _ similarity _ bounds用于创建基线边界。
  • return sum([1.0 if C1 = = C2 else self . baseline _ similarity for C1 in S1 for C2 in S2])用于返回一对序列之间的核值。
  • plot.figure(figsize=(8,5)) 用于在屏幕上绘制图形。
  • plot . X ticks(num . arange(len(X)),X) 用于在图形上绘制 X 刻度。
  • plot . y ticks(num . arange(len(X)),X) 用于在图形上绘制 y 刻度。
  • plot.title("核下序列相似度")用于给出屏幕上的标题。
  • Gaussian process = Gaussian process regressor(kernel = kernel)用于处理高斯回归量。
  • Gaussian process . fit(X[training _ idx],Y[training_idx]) 用于拟合模型。
  • plot.bar(num.arange(len(X)),gp.predict(X),color="r ",label="prediction") 用于在屏幕上绘制条形。
  • plot . X ticks(num . arange(len(X)),X) 用于绘制 X 刻度。
  • plot.title("序列上的回归")用于给图形赋予标题。
  • Gaussian process = Gaussian process classifier(kernel)用于处理高斯分类器。
  • plot.figure(figsize=(8,5)) 用于在屏幕上绘制图形。
import numpy as num
import matplotlib.pyplot as plot
from sklearn.gaussian_process.kernels import Kernel, Hyperparameter
from sklearn.gaussian_process.kernels import GenericKernelMixin
from sklearn.gaussian_process import GaussianProcessRegressor
from sklearn.gaussian_process import GaussianProcessClassifier
from sklearn.base import clone

class SequenceKernel(GenericKernelMixin, Kernel):

    def __init__(self, baseline_similarity=0.6, baseline_similarity_bounds=(1e-5, 1)):
        self.baseline_similarity = baseline_similarity
        self.baseline_similarity_bounds = baseline_similarity_bounds

    def hyperparameter_baseline_similarity(self):
        return Hyperparameter(
            "baseline_similarity", "numeric", self.baseline_similarity_bounds
        )

    def _f(self, s1, s2):
                return sum(
            [1.0 if c1 == c2 else self.baseline_similarity for c1 in s1 for c2 in s2]
        )

    def _g(self, s1, s2)
        return sum([0.0 if c1 == c2 else 1.0 for c1 in s1 for c2 in s2])

    def __call__(self, X, Y=None, eval_gradient=False):
        if Y is None:
            Y = X

        if eval_gradient:
            return (
                num.array([[self._f(x, y) for y in Y] for x in X]),
                num.array([[[self._g(x, y)] for y in Y] for x in X]),
            )
        else:
            return num.array([[self._f(x, y) for y in Y] for x in X])

    def diag(self, X):
        return num.array([self._f(x, x) for x in X])

    def is_stationary(self):
        return False

    def clone_with_theta(self, theta):
        cloned = clone(self)
        cloned.theta = theta
        return cloned

kernel = SequenceKernel()

X = num.array(["AGCT", "AGC", "AACT", "TAA", "AAA", "GAACA"])

K = kernel(X)
D = kernel.diag(X)

plot.figure(figsize=(8, 5))
plot.imshow(num.diag(D ` -0.5).dot(K).dot(num.diag(D ` -0.5)))
plot.xticks(num.arange(len(X)), X)
plot.yticks(num.arange(len(X)), X)
plot.title("Sequence similarity Under kernel")

"""
Regression

"""

X = num.array(["AGCT", "AGC", "AACT", "TAA", "AAA", "GAACA"])
Y = num.array([2.0, 2.0, 3.0, 3.0, 4.0, 4.0])

training_idx = [1, 2, 3, 4]
gaussianprocess = GaussianProcessRegressor(kernel=kernel)
gaussianprocess.fit(X[training_idx], Y[training_idx])

plot.figure(figsize=(8, 5))
plot.bar(num.arange(len(X)), gp.predict(X), color="r", label="prediction")
plot.bar(training_idx, Y[training_idx], width=0.2, color="y", alpha=1, label="training")
plot.xticks(num.arange(len(X)), X)
plot.title("Regression On Sequences")
plot.legend()

"""
Classification
"""

X_train = num.array(["AGCT", "CGA", "TAAC", "TCG", "CTTT", "TGCT"])
Y_train = num.array([True, True, True, False, False, False])

gaussianprocess  = GaussianProcessClassifier(kernel)
gaussianprocess.fit(X_train, Y_train)

X_test = ["AAA", "ATAG", "CTC", "CT", "C"]
Y_test = [True, True, False, False, False]

plot.figure(figsize=(8, 5))
plot.scatter(
    num.arange(len(X_train)),
    [1.0 if c else -1.0 for c in Y_train],
    s=100,
    marker="o",
    edgecolor="none",
    facecolor=(1, 0.75, 0),
    label="training",
)
plot.scatter(
    len(X_train) + num.arange(len(X_test)),
    [1.0 if c else -1.0 for c in Y_test],
    s=100,
    marker="o",
    edgecolor="none",
    facecolor="b",
    label="truth",
)
plot.scatter(
    len(X_train) + num.arange(len(X_test)),
    [1.0 if c else -1.0 for c in gp.predict(X_test)],
    s=100,
    marker="x",
    edgecolor=(0, 2.0, 0.4),
    linewidth=2,
    label="prediction",
)
plot.xticks(num.arange(len(X_train) + len(X_test)), num.concatenate((X_train, X_test)))
plot.yticks([-1, 1], [False, True])
plot.title("Classification On Sequences")
plot.legend()

plot.show()

输出:

运行上述代码后,我们得到以下输出,其中我们可以看到在 scikit learn Gaussian 进程的帮助下,离散数据结构被绘制在屏幕上。

Scikit learn Gaussian Processes

Scikit learn Gaussian Processes

阅读: Scikit 学习随机森林

Scikit 学习高斯回归

在本节中,我们将了解Scikit 如何在 python 中学习高斯回归的工作方式

Scikit learn 高斯回归被定义为一种在机器学习领域产生波动的非参数方法。

代码:

在下面的代码中,我们将导入一些库,从中我们可以创建一个高斯回归器。

  • x,y = make_friedman2(n_samples=550,noise=0,random_state=0) 用于制作 friedman。
  • gaussianProcessregression = GaussianProcessRegressor(内核=内核,随机状态=0)。fit(x,y) 用于创建高斯回归方程并拟合模型。
  • gaussianprocessregression . score(x,y) 用于统计分数。
from sklearn.datasets import make_friedman2
from sklearn.gaussian_process import GaussianProcessRegressor
from sklearn.gaussian_process.kernels import DotProduct, WhiteKernel
x, y = make_friedman2(n_samples=550, noise=0, random_state=0)
kernel = DotProduct() + WhiteKernel()
gaussianProcessregression = GaussianProcessRegressor(kernel=kernel,
        random_state=0).fit(x, y)
gaussianProcessregression.score(x, y)

输出:

运行上面的代码后,我们得到了下面的输出,其中我们可以看到屏幕上打印出了高斯回归函数的分数。

Scikit learn Gaussian regressor

Scikit learn Gaussian regressor

阅读: Scikit 学习功能选择

Scikit 学习高斯回归示例

在本节中,我们将了解 Scikit 学习 python 中高斯回归的例子。

  • Scikit 将高斯学习为具有多元分布随机变量的有限组。
  • Scikit learn 高斯回归被定义为在区域中产生波的贝叶斯方法。

代码:

在下面的代码中,我们将导入一些库,从中我们可以创建一个回归图。

  • x = num.linspace(0,7,num=30)。shape(-1,1) 用于创建一个 linspace。
  • y = target_generator(x,add_noise=False) 用于创建目标生成器。
  • Gaussian regression = plot . y label(" y ")用于绘制图表上的 y 标签。
  • range = num . random . random state(0)用于生成随机数。
  • plot.plot(x,y,label= "预期信号")用于绘制预期信号。
  • plot.xlabel("x") 用于绘制 x 标签。
  • Gaussian process regression = Gaussian process regressor(kernel = kernel,alpha=0.0) 用于创建高斯回归量。
  • y_mean,y _ STD = gaussianprocessregression . predict(x,return_std=True) 用于预测模型。
import numpy as num
def target_generator(x, add_noise=False):
    target = 0.7 + num.sin(5 * x)
    if add_noise:
        range = num.random.RandomState(1)
        target += range.normal(0, 0.5, size=target.shape)
    return target.squeeze()
x = num.linspace(0, 7, num=30).reshape(-1, 1)
y = target_generator(x, add_noise=False)
import matplotlib.pyplot as plot

Gaussianregression= plot.ylabel("y")
range = num.random.RandomState(0)
x_train = range.uniform(0, 5, size=20).reshape(-1, 1)
y_train = target_generator(x_train, add_noise=True)
plot.plot(x, y, label="Expected signal")
plot.scatter(
    x=x_train[:, 0],
    y=y_train,
    color="red",
    alpha=0.4,
    label="Observations",
)
plot.legend()
plot.xlabel("x")
Gaussianregression = plot.ylabel("y")
from sklearn.gaussian_process import GaussianProcessRegressor
from sklearn.gaussian_process.kernels import RBF, WhiteKernel

kernel = 1.0 * RBF(length_scale=1e1, length_scale_bounds=(1e-2, 1e3)) + WhiteKernel(
    noise_level=1, noise_level_bounds=(1e-5, 1e1)
)

gaussianprocessregression = GaussianProcessRegressor(kernel=kernel, alpha=0.0)
gaussianprocessregression.fit(x_train, y_train)
y_mean, y_std = gaussianprocessregression.predict(x, return_std=True)

输出:

运行上面的代码后,我们得到下面的输出,其中我们可以看到屏幕上绘制的高斯回归示例。

Scikit learn Gaussian regressor example

Scikit learn Gaussian regressor example

阅读: Scikit 学习 hidden _ layer _ size

Scikit 学习高斯朴素贝叶斯

在这一节中,我们将了解到scikit 如何学习高斯朴素贝叶斯在 python 中的工作方式

  • 高斯朴素贝叶斯被定义为支持连续值特征的过程。
  • 它创建了一个简单的模型,并通过简单地找到点的平均值和标准偏差来拟合该模型。

代码:

在下面的代码中,我们将导入一些库,从中创建高斯朴素贝叶斯分类器。

  • n_samples = 50000 用于创建 n 个样本。
  • n _ bin = 5校准曲线使用 5 个 bin。
  • x,y = make _ blob(n _ samples = n _ samples,centers=centers,shuffle=False,random_state=42) 用于生成 5 个 blob,一半的 blob 为正,一半为负。
  • sample _ weight = NP . random . randomstate(42)。rand(y.shape[0]) 用于生成随机样本。
  • x_train,x_test,y_train,y_test,sw_train,sw_test = train_test_split(x,y,sample_weight,test_size=0.9,random_state=42 ) 用于将数据集拆分为训练数据和测试数据。
  • classifier.fit(x_train,y_train) 定义高斯不支持样本权重。
  • 分类器 _ 保序= CalibratedClassifierCV(分类器,cv=2,方法= "保序")用于定义保序校准的高斯朴素贝叶斯。
  • classifier _ sigmoid = calibrated classifiercv(classifier,cv=2,method="sigmoid") 用于定义为 sigmoid 校准的高斯朴素贝叶斯。
  • plot.figure() 用于在屏幕上绘制图形。
  • plot.scatter() 用于绘制散点图。
  • plot.title("Data") 用于给图形加标题。
import numpy as num
import matplotlib.pyplot as plot
from matplotlib import cm

from sklearn.datasets import make_blobs
from sklearn.naive_bayes import GaussianNB
from sklearn.metrics import brier_score_loss
from sklearn.calibration import CalibratedClassifierCV
from sklearn.model_selection import train_test_split

n_samples = 50000
n_bins = 5  

centers = [(-7, -7), (0, 0), (7, 7)]
x, y = make_blobs(n_samples=n_samples, centers=centers, shuffle=False, random_state=42)

y[: n_samples // 2] = 0
y[n_samples // 2 :] = 1
sample_weight = np.random.RandomState(42).rand(y.shape[0])

x_train, x_test, y_train, y_test, sw_train, sw_test = train_test_split(
    x, y, sample_weight, test_size=0.9, random_state=42
)

classifier = GaussianNB()
classifier.fit(x_train, y_train)  
probability_pos_classifier = classifier.predict_proba(x_test)[:, 1]

classifier_isotonic = CalibratedClassifierCV(classifier, cv=2, method="isotonic")
classifier_isotonic.fit(x_train, y_train, sample_weight=sw_train)
probability_pos_isotonic = classifier_isotonic.predict_proba(X_test)[:, 1]

classifier_sigmoid = CalibratedClassifierCV(classifier, cv=2, method="sigmoid")
classifier_sigmoid.fit(x_train, y_train, sample_weight=sw_train)
probability_pos_sigmoid = classifier_sigmoid.predict_proba(x_test)[:, 1]

print("Brier Score Losses: (the smaller the better)")

classifier_score = brier_score_loss(y_test, probability_pos_classifier, sample_weight=sw_test)
print("No Calibration: %1.3f" % clf_score)

classifier_isotonic_score = brier_score_loss(y_test, probability_pos_isotonic, sample_weight=sw_test)
print("With Isotonic Calibration: %1.3f" % classifier_isotonic_score)

classifier_sigmoid_score = brier_score_loss(y_test, probability_pos_sigmoid, sample_weight=sw_test)
print("With Sigmoid Calibration: %1.3f" % classifier_sigmoid_score)

plot.figure()
y_unique = num.unique(y)
colors = cm.rainbow(num.linspace(0.0, 1.0, y_unique.size))
for this_y, color in zip(y_unique, colors):
    this_x = x_train[y_train == this_y]
    this_sw = sw_train[y_train == this_y]
    plot.scatter(
        this_x[:, 0],
        this_x[:, 1],
        s=this_sw * 50,
        c=color[num.newaxis, :],
        alpha=0.5,
        edgecolor="y",
        label="Class %s" % this_y,
    )
plot.legend(loc="best")
plot.title("Data")

plot.figure()
order = num.lexsort((probability_pos_classifier,))
plot.plot(prob_pos_clf[order], "b", label="No Calibration (%1.3f)" % classifier_score)
plot.plot(
    prob_pos_isotonic[order],
    "g",
    linewidth=3,
    label="Isotonic Calibration (%1.3f)" % classifier_isotonic_score,
)
plot.plot(
    probability_pos_sigmoid[order],
    "y",
    linewidth=3,
    label="Sigmoid Calibration (%1.3f)" % classifier_sigmoid_score,
)
plot.plot(
    num.linspace(0, y_test.size, 51)[1::2],
    y_test[order].reshape(25, -1).mean(1),
    "r",
    linewidth=3,
    label=r"Empirical",
)
plot.ylim([-0.05, 1.05])
plot.xlabel("Instances Sorted According to Predicted Probability (uncalibrated GNB)")
plot.ylabel("P(y=1)")
plot.legend(loc="upper left")
plot.title("Gaussian naive Bayes probabilities")

plot.show()

输出:

运行上面的代码后,我们得到下面的输出,其中我们可以看到高斯朴素贝叶斯图绘制在屏幕上。

Scikit learn Gaussian naive bayes

Scikit learn Gaussian naive Bayes

阅读:

Scikit 学习高斯内核

在本节中,我们将了解 Scikit 如何在 python 中学习高斯内核

Scikit 学习高斯核定义为 sigma 确定核的宽度的过程。

代码:

在下面的代码中,我们将导入一些库,从中我们可以通过高斯核计算得分。

  • x,y = load _ iris(return _ X _ y = True)用于加载数据。
  • 内核= 1.0 * RBF(1.0) 用于计算内核。
  • GaussianProcessClassifier = GaussianProcessClassifier(kernel = kernel,random_state=0)。fit(x,y)用于拟合模型。
  • gaussianprocessclassifier . score(x,y) 用于计算得分。
from sklearn.datasets import load_iris
from sklearn.gaussian_process import GaussianProcessClassifier
from sklearn.gaussian_process.kernels import RBF
x, y = load_iris(return_X_y=True)
kernel = 1.0 * RBF(1.0)
gaussianprocessclassifier = GaussianProcessClassifier(kernel=kernel,
                  random_state=0).fit(x, y)
gaussianprocessclassifier.score(x, y)

输出:

运行上面的代码后,我们得到下面的输出,其中我们可以看到高斯核分数被打印在屏幕上。

scikit learn Gaussian kernel

scikit learn Gaussian kernel

阅读: Scikit 学习分类教程

Scikit 学习高斯分类器

在本节中,我们将了解Scikit 如何学习 python 中的高斯分类器

Scikit learn Gaussian 分类器被定义为一种高效的方法,致力于将输入类条件分布建模。

代码:

在下面的代码中,我们将导入一些库,从中我们可以预测高斯分类器的概率。

  • x,y = load _ iris(return _ X _ y = True)用于加载数据。
  • GaussianProcessClassifier = GaussianProcessClassifier(kernel = kernel,random_state=0)。fit(x,y)用于拟合分类器模型。
  • Gaussian classifier . predict _ proba(x[:2,]) 用于预测分类器的概率。
from sklearn.datasets import load_iris
from sklearn.gaussian_process import GaussianProcessClassifier
from sklearn.gaussian_process.kernels import RBF
x, y = load_iris(return_X_y=True)
kernel = 1.0 * RBF(1.0)
gaussianclassifier = GaussianProcessClassifier(kernel=kernel,
                    random_state=0).fit(x, y)
gaussianclassifier.score(x, y)
gaussianclassifier.predict_proba(x[:2,:])

输出:

运行上面的代码后,我们得到下面的输出,其中我们可以看到屏幕上预测了高斯分类器的概率。

scikit learn Gaussian classifier

Scikit learn Gaussian classifier

阅读: Scikit 学习超参数调整

Scikit 学习高斯过程分类器

在本节中,我们将了解Scikit 如何在 python 中学习高斯过程分类器的工作方式

Scikit learn 高斯过程分类器被定义为拉普拉斯近似和支持多类分类的有效方法。

代码:

在下面的代码中,我们将导入一些库,在高斯过程分类器的帮助下,我们可以从中制作图形。

  • iris = datasets . load _ iris()用于加载一些虹膜数据。
  • X = iris.data[:,:2] 用于取前两个特征。
  • Gaussian process classifier _ RBF _ isotropic = Gaussian process classifier(kernel = kernel)。fit(X,y)用于拟合模型。
  • titles = ["各向同性 RBF ","各向异性 RBF"] 用来给图加标题。
  • Z = classifier . predict _ proba(num . c _[xx . ravel(),yy.ravel()]) 用于预测概率
  • plot.imshow(Z,extent=(x_min,x_max,y_min,y_max),origin="lower") 用于绘制图形。
  • plot.scatter(X[:,0],X[:,1],c=num.array(["y "," c "," g"])[y],edgecolors=(0,0,0)) 用于绘制散点图。
  • plot.xlabel("萼片长度")用于绘制 x 标签。
  • plot.title("%s,LML:%.3f(titles[i],分类器. log_marginal_likelihood(分类器.内核 _)。)【θ】))用于在图上绘制标题。
import numpy as num
import matplotlib.pyplot as plot
from sklearn import datasets
from sklearn.gaussian_process import GaussianProcessClassifier
from sklearn.gaussian_process.kernels import RBF

iris = datasets.load_iris()
X = iris.data[:, :2] 
y = num.array(iris.target, dtype=int)

h = 0.04  
kernel = 1.0 * RBF([1.0])
gaussianprocessclassifier_rbf_isotropic = GaussianProcessClassifier(kernel=kernel).fit(X, y)
kernel = 1.0 * RBF([1.0, 1.0])
gaussianprocessclassifier_rbf_anisotropic = GaussianProcessClassifier(kernel=kernel).fit(X, y)

x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1
y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1
xx, yy = num.meshgrid(num.arange(x_min, x_max, h), num.arange(y_min, y_max, h))

titles = ["Isotropic RBF", "Anisotropic RBF"]
plot.figure(figsize=(12, 7))
for i, classifier in enumerate((gaussianprocessclassifier_rbf_isotropic, gaussianprocessclassifier_rbf_anisotropic)):

    plot.subplot(1, 2, i + 1)

    Z = classifier.predict_proba(num.c_[xx.ravel(), yy.ravel()])

    Z = Z.reshape((xx.shape[0], xx.shape[1], 3))
    plot.imshow(Z, extent=(x_min, x_max, y_min, y_max), origin="lower")

    plot.scatter(X[:, 0], X[:, 1], c=num.array(["y", "c", "g"])[y], edgecolors=(0, 0, 0))
    plot.xlabel("Sepal length")
    plot.ylabel("Sepal width")
    plot.xlim(xx.min(), xx.max())
    plot.ylim(yy.min(), yy.max())
    plot.xticks(())
    plot.yticks(())
    plot.title(
        "%s, LML: %.3f" % (titles[i], classifier.log_marginal_likelihood(classifier.kernel_.theta))
    )

plot.tight_layout()
plot.show()

输出:

运行上述代码后,我们得到以下输出,其中我们可以看到屏幕上绘制了高斯过程分类器图。

scikit learn Gaussian process classifier

scikit learn Gaussian process classifier

阅读: Scikit 学习梯度下降

Scikit 学习高斯过程 RBF 内核

在本节中,我们将了解Scikit 如何学习高斯过程 RBF 内核在 python 中的工作方式

Scikit 学习高斯过程 RBF 核定义为作为定标器或具有相同维数的核。

代码:

在下面的代码中,我们将导入一些库,在 RBF 内核的帮助下,我们可以从中制作一个图形。

  • x = num.linspace(0,5,100) 用于创建一个 linspace。
  • y _ samples = GPR _ model . sample _ y(X,n_samples) 用于创建样本模型。
  • axis.plot() 用于绘制模型。
  • axis.plot(x,y_mean,color="blue ",label="Mean") 用于绘制轴。
  • X_train = range.uniform(0,5,10)。整形(-1,1) 用于创建均匀范围。
  • plot _ GPR _ samples(gaussianprocessregressor,n_samples=n_samples,axis=axs[0]) 用于绘制样本。
  • axs[0]。set_title("来自先前分布的样本")用于给图形加标题。
  • axs[1]。散点图(X_train[:,0],y_train,color="red ",zorder=10,label="Observations") 用于绘制散点图。
import matplotlib.pyplot as plot
import numpy as num

def plot_gpr_samples(gpr_model, n_samples, axis):

    x = num.linspace(0, 5, 100)
    X = x.reshape(-1, 1)

    y_mean, y_std = gpr_model.predict(X, return_std=True)
    y_samples = gpr_model.sample_y(X, n_samples)

    for idx, single_prior in enumerate(y_samples.T):
        axis.plot(
            x,
            single_prior,
            linestyle="--",
            alpha=0.7,
            label=f"Sampled function #{idx + 1}",
        )
    axis.plot(x, y_mean, color="blue", label="Mean")
    axis.fill_between(
        x,
        y_mean - y_std,
        y_mean + y_std,
        alpha=0.1,
        color="blue",
        label=r"$\pm$ 1 std. dev.",
    )
    axis.set_xlabel("x")
    axis.set_ylabel("y")
    axis.set_ylim([-3, 3])
    range = num.random.RandomState(4)
X_train = range.uniform(0, 5, 10).reshape(-1, 1)
y_train = num.sin((X_train[:, 0] - 2.5) ** 2)
n_samples = 5
from sklearn.gaussian_process import GaussianProcessRegressor
from sklearn.gaussian_process.kernels import RBF

kernel = 1.0 * RBF(length_scale=1.0, length_scale_bounds=(1e-1, 10.0))
gaussianprocessregressor = GaussianProcessRegressor(kernel=kernel, random_state=0)

fig, axs = plot.subplots(nrows=2, sharex=True, sharey=True, figsize=(10, 8))

plot_gpr_samples(gaussianprocessregressor, n_samples=n_samples, axis=axs[0])
axs[0].set_title("Samples from prior distribution")

gpr.fit(X_train, y_train)
plot_gpr_samples(gaussianprocessregressor, n_samples=n_samples, axis=axs[1])
axs[1].scatter(X_train[:, 0], y_train, color="red", zorder=10, label="Observations")
axs[1].legend(bbox_to_anchor=(1.05, 1.5), loc="upper left")
axs[1].set_title("Samples from posterior distribution")

fig.suptitle("Radial Basis Function kernel", fontsize=18)
plot.tight_layout()

输出:

运行上述代码后,我们得到以下输出,其中我们可以看到屏幕上绘制了 scikit learn Gaussian process RBF 内核图。

scikit learn Gaussian process RBF kernel

scikit learn Gaussian process RBF kernel

另外,看看更多的 Scikit 学习教程。

因此,在本教程中,我们讨论了 Scikit learn Gaussian ,我们还涵盖了与其实现相关的不同示例。这是我们已经讨论过的例子列表。

  • Scikit 学习高斯
  • Scikit 学习高斯混合模型
  • Scikit 学习高斯过程
  • Scikit 学习高斯回归
  • Scikit 学习高斯回归示例
  • Scikit 学习高斯朴素贝叶斯
  • Scikit 学习高斯内核
  • Scikit 学习高斯分类器
  • Scikit 学习高斯过程分类器
  • Scikit 学习高斯过程 RBF 核

Bijay Kumar MVPBijay Kumar

Python 是美国最流行的语言之一。我从事 Python 工作已经有很长时间了,我在与 Tkinter、Pandas、NumPy、Turtle、Django、Matplotlib、Tensorflow、Scipy、Scikit-Learn 等各种库合作方面拥有专业知识。我有与美国、加拿大、英国、澳大利亚、新西兰等国家的各种客户合作的经验。查看我的个人资料。

enjoysharepoint.com/

Scikit 学习遗传算法

原文:https://pythonguides.com/scikit-learn-genetic-algorithm/

Python & Machine Learning training courses

在本 Python 教程中,我们将学习sci kit learn 遗传算法如何工作,我们还将涵盖与遗传算法相关的不同示例。此外,我们将涵盖这些主题。

  • Scikit 学习遗传算法
  • Scikit 学习遗传选项
  • Scikit 学习遗传算法特征选择
  • Scikit 学习遗传选择 cv
  • Scikit 学习遗传算法的优缺点

目录

Scikit 学习遗传算法

在这一节,我们将学习如何 scikit 学习遗传算法如何在 python 中工作。

  • 在前进之前,我们应该有一些关于遗传学的知识。基因被定义为生物进化或与基因有关的品种。
  • 遗传算法完全专注于自然选择,轻松解决有约束和无约束升级或者我们可以说优化问题。

代码:

在下面的代码中,我们将导入 GeneticSelectionCv ,从中我们可以从数据集中选择特性。

  • from _ _ future _ _ import print _ function用于将打印功能从 python 3 引入 python 2.6。
  • x = num.hstack((iris.data,e)) 用于逐列堆叠输入数组的序列。
  • 选择器= selectors.fit(x,Y) 用于将数据拟合到模型中。
  • print(selectors . support _)用于打印选中的数据。
from __future__ import print_function
import numpy as num
from sklearn import datasets, linear_model

from genetic_selection import GeneticSelectionCV

def main():
    iris = datasets.load_iris()

    **# Some noisy data not correlated**
    e = num.random.uniform(0, 0.2, size=(len(iris.data), 30))

    x = num.hstack((iris.data, e))
    Y = iris.target

    estimators = linear_model.LogisticRegression(solver="liblinear", multi_class="ovr")

    selectors = GeneticSelectionCV(estimators,
                                  cv=6,
                                  verbose=2,
                                  scoring="accuracy",
                                  max_features=6,
                                  n_population=60,
                                  crossover_proba=0.6,
                                  mutation_proba=0.2,
                                  n_generations=50,
                                  crossover_independent_proba=0.6,
                                  mutation_independent_proba=0.06,
                                  tournament_size=4,
                                  n_gen_no_change=20,
                                  caching=True,
                                  n_jobs=-2)
    selectors = selectors.fit(x, Y)

    print(selectors.support_)

if __name__ == "__main__":
    main()

输出:

运行上面的代码后,我们得到下面的输出,其中我们可以看到所选的特性被打印在屏幕上。

scikit learn genetic algorithm

scikit learn genetic algorithm

另外,请查看: Scikit-learn 与 tensor flow–详细对比

Scikit 学习基因选项

在这一节中,我们将学习 python 中的基因选择是如何工作的

  • Scikit learn genetic opt 定义为观察到的优化交叉验证指标的一组参数。
  • 它使用进化算法来选择特征并设计不同的分类或回归模型。

代码:

在下面的代码中,我们将导入不同的库,从这些库中我们可以借助 genetic opt 找到分类问题。

  • GASearchCV 用于使用进化算法运行拟合过程。
  • data = load_digits() 用于加载数据。
  • x = data . images . shape((n sample,-1)) 用于对数据图像进行整形。
  • cv = StratifiedKFold(n _ splits = 3,shuffle=True) 用作交叉验证策略 is 可能只是 int。
  • evolved _ estimator . fit(x _ train,y_train) 用于训练和优化估计器。
import matplotlib.pyplot as plot
from sklearn_genetic import GASearchCV
from sklearn_genetic.space import Categorical, Integer, Continuous
from sklearn.model_selection import train_test_split, StratifiedKFold
from sklearn.ensemble import RandomForestClassifier
from sklearn.datasets import load_digits
from sklearn.metrics import accuracy_score
data = load_digits()
nsample = len(data.images)
x = data.images.reshape((nsample, -1))
y = data['target']
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.33, random_state=42)

_, axes = plot.subplots(nrows=1, ncols=4, figsize=(10, 3))
for axis, image, label in zip(axes, data.images, data.target):
    axis.set_axis_off()
    axis.imshow(image, cmap=plot.cm.gray_r, interpolation='nearest')
    axis.set_title('Training: %i' % label)
    param_grid = {'min_weight_fraction_leaf': Continuous(0.01, 0.5, distribution='log-uniform'),
              'bootstrap': Categorical([True, False]),
              'max_depth': Integer(2, 30),
              'max_leaf_nodes': Integer(2, 35),
              'n_estimators': Integer(100, 300)}

classifier = RandomForestClassifier()

cv = StratifiedKFold(n_splits=3, shuffle=True)

**# The main class from sklearn-genetic-opt**
evolved_estimator = GASearchCV(estimator=classifier,
                              cv=cv,
                              scoring='accuracy',
                              param_grid=param_grid,
                              n_jobs=-1,
                              verbose=True)

evolved_estimator.fit(x_train, y_train)

输出:

运行上面的代码后,我们得到下面的输出,其中我们可以看到数据在 GASearchCV 的帮助下被拟合并打印在屏幕上。

scikit learn genetic Opt

scikit learn genetic opt

阅读: Scikit-learn 逻辑回归

Scikit 学习遗传算法特征选择

在本节中,我们将学习 scikit 如何在 python 中学习遗传算法特征选择

  • 特征选择被定义为当预测模型由开发者开发时减少输入变量数量的过程。
  • 遗传算法是对问题的最优值进行自然选择的过程。

代码:

在下面的代码中,我们将导入一些库,通过这些库,我们可以在遗传选择函数的帮助下选择特性。

  • data = load _ breast _ cancer()用于加载乳腺癌数据集。
  • dataframe = pds。DataFrame(data.data,columns=data.feature_names) 用于导入数据集。
  • models = models.fit(x,y) 用于将数据拟合到模型中。
  • print('Feature Selection:',x.columns[models.support_]) 用于在屏幕上打印所选特征。
from sklearn.datasets import load_breast_cancer
from genetic_selection import GeneticSelectionCV
from sklearn.tree import DecisionTreeClassifier
import pandas as pds
import numpy as num
data = load_breast_cancer()
dataframe = pds.DataFrame(data.data, columns=data.feature_names)
dataframe['target'] = data.target
x = dataframe.drop(['target'], axis=1)
y = dataframe['target'].astype(float)
estimators = DecisionTreeClassifier()
models = GeneticSelectionCV(
    estimators, cv=5, verbose=0,
    scoring="accuracy", max_features=5,
    n_population=100, crossover_proba=0.5,
    mutation_proba=0.2, n_generations=50,
    crossover_independent_proba=0.5,
    mutation_independent_proba=0.04,
    tournament_size=3, n_gen_no_change=10,
    caching=True, n_jobs=-1)
models = models.fit(x, y)
print('Feature Selection:', x.columns[models.support_])

输出:

运行上面的代码后,我们得到了下面的输出,其中我们可以看到特性选择被打印在屏幕上。

scikit learn genetic algorithm feature selection

scikit learn genetic algorithm feature selection

阅读: Scikit 学习决策树

Scikit 学习基因选择 cv

在本节中,我们将了解scikit 如何在 python 中学习遗传选择 cv 的工作方式

scikit learn 遗传选择被定义为探索函数的最佳值的自然选择过程

代码:

在下面的代码中,我们将从 genetic_selection 导入 GeneticSelectionCV,选择器通过它选择最佳特性。

  • from _ _ future _ _ import print _ function用于将打印功能从 python 3 引入 python 2.6。
  • e = np.random.uniform(0,0.1,size=(len(iris.data),20)) 用于均匀生成随机数。
  • x = np.hstack((iris.data,e)) 用于按列堆叠输入数组的序列。
  • GeneticSelectionCV() 用于从样本空间中随机生成特征集。
  • selectors = selectors.fit(x,y) 用于拟合模型。
  • print(selectors . support _)用于打印选中的数据。
from __future__ import print_function
import numpy as num
from sklearn import datasets, linear_model

from genetic_selection import GeneticSelectionCV

def main():
    iris = datasets.load_iris()
    e = np.random.uniform(0, 0.1, size=(len(iris.data), 20))

    x = np.hstack((iris.data, e))
    y = iris.target

    estimators = linear_model.LogisticRegression(solver="liblinear", multi_class="ovr")

    selectors = GeneticSelectionCV(estimators,
                                  cv=10,
                                  verbose=4,
                                  scoring="accuracy",
                                  max_features=8,
                                  n_population=70,
                                  crossover_proba=0.7,
                                  mutation_proba=0.4,
                                  n_generations=80,
                                  crossover_independent_proba=0.7,
                                  mutation_independent_proba=0.07,
                                  tournament_size=5,
                                  n_gen_no_change=20,
                                  caching=True,
                                  n_jobs=-4)
    selectors = selectors.fit(x, y)

    print(selectors.support_)

if __name__ == "__main__":
    main()

输出:

运行上面的代码后,我们得到下面的输出,其中我们可以看到所选的数据被打印在屏幕上。

scikit learn genetic selection cv

scikit learn genetic selection cv

阅读: Scikit 学习隐马尔可夫模型

Scikit 学习遗传算法的优缺点

在本节中,我们将学习关于 scikit 学习遗传算法的优点和缺点在 python 中。

优点:

  • 遗传算法是很容易理解的人可以很容易地理解这个算法中发生的事情。
  • 遗传算法对于噪声环境非常好。
  • 遗传算法从染色体组或点群中搜索,而不是从单个点中搜索。
  • 遗传算法使用概率转移规则,而不使用确定性规则。
  • 遗传算法很容易并行化。
  • 遗传算法可以很容易或很好地处理连续或离散问题。
  • 遗传算法支持多目标优化。
  • 遗传算法是概率性的、时间相关的、非线性的、非平稳的。
  • 遗传算法需要的信息更少。
  • 使用染色体的遗传算法。

劣势:

  • 遗传算法要求或需要一个特殊的定义。
  • 遗传算法需要较少的关于问题的信息,但是操作符编写和表示很困难。
  • 遗传算法具有计算复杂性。
  • 遗传算法非常耗时。

您可能还想阅读 Scikit learn 上的以下教程。

因此,在本教程中,我们讨论了****sci kit 学习遗传算法,我们还涵盖了与其实现相关的不同示例。这是我们已经讨论过的例子列表。

*** Scikit 学习遗传算法

  • Scikit 学习遗传选项
  • Scikit 学习遗传算法特征选择
  • Scikit 学习遗传选择 cv
  • Scikit 学习遗传算法的优缺点

Bijay Kumar MVPBijay Kumar

Python 是美国最流行的语言之一。我从事 Python 工作已经有很长时间了,我在与 Tkinter、Pandas、NumPy、Turtle、Django、Matplotlib、Tensorflow、Scipy、Scikit-Learn 等各种库合作方面拥有专业知识。我有与美国、加拿大、英国、澳大利亚、新西兰等国家的各种客户合作的经验。查看我的个人资料。

enjoysharepoint.com/**

Scikit 学习梯度下降

原文:https://pythonguides.com/scikit-learn-gradient-descent/

Python & Machine Learning training courses

在本 Python 教程中,我们将学习Scikit learn Gradient descent 如何在python 中工作,我们还将涵盖与渐变 descent 相关的不同例子。此外,我们将涵盖这些主题。

  • Scikit 学习梯度下降
  • Scikit 学习梯度下降回归
  • Scikit 学习随机梯度下降分类器
  • Scikit 学习批次梯度下降
  • Scikit 学习迷你批次梯度下降
  • Scikit 学习随机梯度下降回归
  • Scikit 学习逻辑回归梯度下降
  • Scikit 学习梯度下降线性回归

目录

Scikit 学习梯度下降

在本节中,我们将了解Scikit 如何在python 中学习渐变下降

  • 梯度下降机器学习的主干,在训练模型时使用。它还结合了每一个算法,很容易理解。
  • Scikit learn 梯度下降是回归器和分类器的一种非常简单有效的方法。
  • 它还适用于大规模和机器学习问题,并且在文本分类、自然语言处理方面也有经验。
  • 在 scikit 学习梯度下降中,损失梯度一次猜测每个样本,然后更新我们的模型。

代码:

在下面的代码中,我们导入一些函数来计算损失、假设以及梯度。

  • 假设= num.dot(X,theta) 用于计算假设。
  • 损失=假设–Y用于计算损失。
  • CST = num . sum(loss * * 2)/(2 * a)用于计算成本。
  • theta = theta–alpha * gradient用于更新 theta 参数。
  • Y[I]=(I+bias)+rand . uniform(0,2) *方差作为目标变量。
  • X,Y = genData(90,20,9) 用于生成 90 个点,以 20 和 10 方差为基础,作为一点噪声。
  • 打印(θ)用于打印θ的值。
import numpy as num
import random as rand

def gradientDescent(X, Y, theta, alpha, a, numIterations):
    Xtrans = X.transpose()
    for i in range(0, numIterations):
        hypothesis = num.dot(X, theta)
        loss = hypothesis - Y

        cst = num.sum(loss ** 2) / (2 * a)
        print("Iteration %d | Cost: %f" % (i, cst))
        gradient = num.dot(Xtrans, loss) / a
        theta = theta - alpha * gradient
    return theta

def genData(numPoints, bias, variance):
    X = num.zeros(shape=(numPoints, 3))
    Y = num.zeros(shape=numPoints)
    **# basically a straight line**
    for i in range(0, numPoints):
        X[i][0] = 2
        X[i][1] = i
        Y[i] = (i + bias) + rand.uniform(0, 2) * variance
    return X, Y
X,Y = genData(90, 20, 9)
a, b = num.shape(X)
numIterations= 10000
alpha = 0.0004
theta = num.ones(b)
theta = gradientDescent(X,Y, theta, alpha,a, numIterations)
print(theta)

输出:

运行上面的代码后,我们得到下面的输出,我们可以看到点数已经生成,theta 的值打印在屏幕上。

scikit learn gradient descent

Scikit learn gradient descent

阅读: Scikit-learn 逻辑回归

Scikit 学习梯度下降回归

在本节中,我们将了解Scikit 如何学习梯度下降回归在 python 中工作

  • sci kit learn gradient descent regressor 被定义为计算成本函数并支持不同损失函数以拟合回归模型的过程。
  • 梯度下降回归模型便于处理大量的训练数据。

代码:

在下面的代码中,我们将导入一些库,从中预测最佳回归线。

  • 自我。X = X 用于定义一个类的方法。
  • y_pred = self.predict() 函数用于预测模型。
  • self . a[0]= self . a[0]–(learning rate (1/b) NP . sum(y _ pred–y)))用于更新模型的系数。
  • J =(1/2 * b)(NP . sum(y _ pred–self . y) * 2)用于计算模型的成本。
  • f = plt.figure(fig) 用于在图形上绘制图形。
  • regr.plot_best_fit(y_pred,'初始最佳拟合线')用于绘制最佳拟合线。
  • plot.plot(range(iterations),costs,color='r') 用于验证成本函数的减少。
  • regr . predict([I for I in range(10)])用于使用回归器进行预测。
import numpy as num
import matplotlib.pyplot as plot

class Linear_Regression:
    def __init__(self, X, y):
        self.X = X
        self.y = y
        self.a = [0, 0]

    def update_coeffs(self, learningrate):
        y_pred = self.predict()
        y = self.y
        b = len(y)
        self.a[0] = self.a[0] - (learningrate * ((1/b) *
                                np.sum(y_pred - y)))

        self.a[1] = self.a[1] - (learningrate * ((1/b) *
                                np.sum((y_pred - y) * self.X)))

    def predict(self, X=[]):
        y_pred = np.array([])
        if not X: X = self.X
        a = self.a
        for x in X:
            y_pred = np.append(y_pred, a[0] + (a[1] * x))

        return y_pred

    def get_current_accuracy(self, y_pred):
        t, e = y_pred, self.y
        s = len(y_pred)
        return 1-sum(
            [
                abs(t[i]-e[i])/e[i]
                for i in range(s)
                if e[i] != 0]
        )/s

    def compute_cost(self, y_pred):
        b = len(self.y)
        J = (1 / 2*b) * (np.sum(y_pred - self.y)**2)
        return J

    def plot_best_fit(self, y_pred, fig):
                f = plt.figure(fig)
                plot.scatter(self.X, self.y, color='r')
                plot.plot(self.X, y_pred, color='y')
                f.show()

def main():
    X = np.array([i for i in range(11)])
    y = np.array([2*i for i in range(11)])

    regr = Linear_Regression(X, y)

    iterations = 0
    steps = 90
    learningrate = 0.01
    costs = []

    y_pred = regr.predict()
    regr.plot_best_fit(y_pred, 'Initial best fit line')

    while 1:
        y_pred = regr.predict()
        cst = regr.compute_cost(y_pred)
        costs.append(cst)
        regr.update_coeffs(learningrate)

        iterations += 1
        if iterations % steps == 0:
            print(iterations, "epochs elapsed")
            print("current accuracy is :",
                regr.get_current_accuracy(y_pred))
            break

    **#final best-fit line**
    regr.plot_best_fit(y_pred, 'Final Best Fit Line')

    h = plot.figure('Verification')
    plot.plot(range(iterations), costs, color='r')
    h.show()

    regr.predict([i for i in range(10)])

if __name__ == '__main__':
    main()

输出:

运行上面的代码后,我们得到下面的代码输出,其中我们可以看到当前的精度和回归最佳拟合线绘制在屏幕上。

Scikit learn gradient descent regression

Scikit learn gradient descent regression

阅读: Scikit 学习决策树

Scikit 学习随机梯度下降分类器

在本节中,我们将了解sci kit 如何学习 python 中的随机梯度下降分类器

Scikit learn 随机梯度下降分类器是一个寻找能够降低代价函数的系数的值的过程。

代码:

在下面的代码中,我们将从 sklearn.linear_model 中导入 SDGClassifier,通过它我们可以很容易的理解每一个算法。

  • x = [[1。, 1.], [2., 2.]] 用于保存训练样本。
  • y = [1,2] 用于保存目标样本。
  • classifier.fit(x,y) 用于拟合分类器。
  • 分类器预测。, 3.]]) 用于预测分类器。
  • classifier.coef_ 用于获取保存模型参数的分类器的系数。
from sklearn.linear_model import SGDClassifier
x = [[1., 1.], [2., 2.]]
y = [1, 2]
classifier = SGDClassifier(loss="hinge", penalty="l2", max_iter=7)
classifier.fit(x, y)
classifier.predict([[3., 3.]])
classifier.coef_

输出:

运行上面的代码后,我们得到下面的输出,其中我们可以看到分类器的系数被打印在屏幕上。

scikit learn stochastic gradient descent classifier

scikit learn stochastic gradient descent classifier

阅读: Scikit 学习层次聚类

Scikit 学习随机梯度下降回归

在本节中,我们将在 python 中了解sci kit 随机梯度下降回归如何工作

Scikit 学习随机梯度下降回归计算代价函数,支持损失函数。

代码:

在下面的代码中,我们将从 sklearn.linear_model 中导入 SGCRegressor,通过它我们可以计算函数的开销,并且还支持不同的对数函数。

  • range = num . random . random state(0)用于创建随机函数。
  • y = range.randn(nsamples) 用于保存目标样本。
  • x = range.randn(nsamples,nfeatures) 用于保存训练样本。
  • regressor = make _ pipeline(standard scaler()、SGDRegressor(max_iter=100,tol=1e-3)) pipeline 用作带有拟合和预测功能的设置。
  • regressor.fit(x,y) 用于拟合模型。
import numpy as num
from sklearn.linear_model import SGDRegressor
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler
nsamples, nfeatures = 12,7
range = num.random.RandomState(0)
y = range.randn(nsamples)
x = range.randn(nsamples, nfeatures)
#Always scale the input.The most convenient way to use a pipeline.
regressor = make_pipeline(StandardScaler(),
                          SGDRegressor(max_iter=100, tol=1e-3))
regressor.fit(x, y)

输出:

运行上面的代码后,我们得到下面的输出,我们可以看到屏幕上显示了回归函数。

Scikit learn stochastic gradient descent regressor

Scikit learn stochastic gradient descent regressor

阅读: Scikit 学习隐马尔可夫模型

Scikit 学习批次梯度下降

在本节中,我们将了解Scikit 如何在 python 中学习批量渐变下降的工作方式

  • 梯度下降是一个观察使函数代价最小的函数参数值的过程。
  • 在批量梯度下降中,计算梯度时在每个步骤中使用整个数据集。它还在模型内部构建了简单的更新。

代码:

在下面的代码中,我们将从 sklearn.datasets 导入 make_regression,批处理梯度下降就是通过它来工作的。

  • s = X.shape[0] 作为样本数。
  • l oss =假设–Y用于计算损失。
  • J = num.sum(loss ** 2) / (2 * s) 用于计算成本。
  • theta = theta–alpha *梯度用于更新 he 模型。
  • X = num.c_[ num.ones(s),X] 用于插入列中的值。
  • Y _ predict = theta[0]+theta[1] X*用于预测值。
  • pylab.plot(X[:,1],Y,' r') 用于绘制图形。
import numpy as num
import random as rand
from sklearn.datasets import make_regression 
import pylab
from scipy import stats

def gradient_descent_2(alpha, X, Y, numIterations):
    s = X.shape[0]
    theta = num.ones(2)
    X_transpose = X.transpose()
    for iter in range(0, numIterations):
        hypothesis = num.dot(X, theta)
        loss = hypothesis - Y
        J = num.sum(loss ** 2) / (2 * s)  
        print ("iter %s | J: %.3f" % (iter, J))    
        gradient = np.dot(X_transpose, loss) / s         
        theta = theta - alpha * gradient  
    return theta

if __name__ == '__main__':

    X, Y = make_regression(n_samples=100, n_features=1, n_informative=1, 
                        random_state=0, noise=35) 
    s, q = num.shape(X)
    X = num.c_[ num.ones(s), X] # insert column
    alpha = 0.01 # learning rate
    theta = gradient_descent_2(alpha, X, Y, 1000)

    for i in range(X.shape[1]):
        Y_predict = theta[0] + theta[1]*X 
    pylab.plot(X[:,1],Y,'r')
    pylab.plot(X,Y_predict,'b-')
    pylab.show()

输出:

运行上面的代码后,我们得到下面的输出,其中我们可以看到批量梯度下降图打印在屏幕上。

scikit learn batch gradient descent

scikit learn batch gradient descent

阅读: Scikit 学习岭回归

Scikit 学习迷你批次梯度下降

在本节中,我们将了解 Scikit 如何在 python 中学习 minibatch 渐变下降的工作方式

  • sci kit learn mini batch gradient descent 是 gradient descent 的替代方法,它将大型数据集分成小批,并计算模型的误差。
  • Minibatch 梯度下降可以轻松快速地更新参数。如果批量较大,更新模型时噪音较小。

代码:

在下面的代码中,我们将导入一些库,从中我们可以制作一个 minibatch 梯度下降图。

  • data = num . random . multivarial _ normal(mean,cov,8000) 用于创建数据。
  • plot.scatter(data[:600,0],data[:600,1],marker = ' . ')用于绘制或可视化数据。
  • data = num . h stack((num . ones((data . shape[0],2)),data)) 用于将输入数组的序列按列堆叠。
  • X_train = data[:split,:-1] 用于将数据集拆分成训练数据。
  • X_test = data[split:,-1] 用于将数据集拆分成测试数据。
  • print(" Number of training set = % d " %(X _ train . shape[0])用于打印训练数据集的数量。
  • print(" Number of testing set = % d " %(X _ test . shape[0])用于打印测试数据集的数量。
 import numpy as num
import matplotlib.pyplot as plot

mean = num.array([6.0, 7.0])
cov = num.array([[2.0, 0.97], [0.97, 1.3]])
data = num.random.multivariate_normal(mean, cov, 8000)

plot.scatter(data[:600, 0], data[:600, 1], marker = '.')
plot.show()

data = num.hstack((num.ones((data.shape[0], 2)), data))

split_factor = 0.95
split = int(split_factor * data.shape[0])

X_train = data[:split, :-1]
y_train = data[:split, -1].reshape((-1, 1))
X_test = data[split:, :-1]
y_test = data[split:, -1].reshape((-1, 1))

print("Number of training set = % d"%(X_train.shape[0]))
print("Number of testing set = % d"%(X_test.shape[0]))

输出:

运行上面的代码后,我们得到下面的输出,其中我们可以看到屏幕上绘制了带有图形的训练和测试集的数量。

scikit learn minibatch gradient descent

scikit learn minibatch gradient descent

阅读: Scikit 学习随机森林

Scikit 学习逻辑回归梯度下降

在本节中,我们将了解 Scikit 如何学习逻辑回归梯度下降在 python 中的工作方式

  • Scikit learn 逻辑回归梯度下降是一个解决分类问题的过程,离散变量是一个结果。
  • 梯度下降被定义为最小化模型损失或误差的优化算法。

代码:

在下面的代码中,我们将导入一些库,从中我们可以进行逻辑回归梯度下降。

  • 数据集来源——https://www.kaggle.com/rakeshrau/social-network-ads从此处下载数据集。
  • data = PDS . read _ CSV(" dataa . CSV ")用于加载数据集。
  • plot.scatter(data['Age'],data['Purchased']) 用于绘制或可视化数据集。
  • X_train,X_test,y_train,y _ test = train _ test _ split(data[' Age '],data['Purchased'],test_size=0.20) 用于将数据集分为训练集和测试集。
  • y_pred = predict(X,b1,b2) 用于预测模型。
  • d _ b1 =-2 * sum((Y–Y _ pred) Y _ pred *(1–Y _ pred))*用于推导相对于 B1 的损失。
  • d _ b2 =-2 * sum(X (Y–Y _ pred) Y _ pred *(1–Y _ pred))用于推导关于 B2 的损失。
  • b0,b1 = logistic_regression(X_train,y_train) 用于训练模型。
  • y_pred = predict(X_test_norm,b0,b1) 用于进行预测。
  • plot.scatter(X_test,y_pred,c="red") 用于绘制图形。
  • print(f " Accuracy = { Accuracy/len(y _ pred)} "用于打印精度。
import numpy as num
import pandas as pds
import matplotlib.pyplot as plot
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from math import exp
plot.rcParams["figure.figsize"] = (12, 8)

data = pds.read_csv("dataa.csv")
data.head()

plot.scatter(data['Age'], data['Purchased'])
plot.show()

X_train, X_test, y_train, y_test = train_test_split(data['Age'], data['Purchased'], test_size=0.20)

def normalize(X):
    return X - X.mean()

**# Method to make predictions**
def predict(X, b1, b2):
    return num.array([1 / (1 + exp(-1*b1 + -1*b2*x)) for x in X])

def logistic_regression(X, Y):

    X = normalize(X)

    **# Initializing variables**
    b1 = 0
    b2 = 0
    l = 0.001
    epochs = 350

    for epoch in range(epochs):
        y_pred = predict(X, b1, b2)
        d_b1 = -2 * sum((Y - y_pred) * y_pred * (1 - y_pred))  
        d_b2 = -2 * sum(X * (Y - y_pred) * y_pred * (1 - y_pred))  
       ** # Update b1 and b2**
        b1 = b1 - l * d_b1
        b2 = b2 - l * d_b2

    return b0, b1
b0, b1 = logistic_regression(X_train, y_train)

X_test_norm = normalize(X_test)
y_pred = predict(X_test_norm, b0, b1)
y_pred = [1 if p >= 0.7 else 0 for p in y_pred]

plot.clf()
plot.scatter(X_test, y_test)
plot.scatter(X_test, y_pred, c="red")
plot.show()

accuracy = 0
for i in range(len(y_pred)):
    if y_pred[i] == y_test.iloc[i]:
        accuracy += 1
print(f"Accuracy = {accuracy / len(y_pred)}")

输出:

运行上面的代码后,我们得到下面的输出,可以看到屏幕上打印了逻辑回归图和准确度分数。

Scikit learn Logistic regression gradient descent

Scikit learn Logistic regression gradient descent

阅读: Scikit 学习功能选择

Scikit 学习梯度下降线性回归

在这一节中,我们将学习关于 scikit 学习梯度回归线性回归 在 python 中的作品

  • 线性回归被定义为线性系统,线性回归的系数使用线性代数计算。
  • 梯度下降线性回归也是一种优化算法,可以最小化模型的损失和误差。

代码:

在下面的代码中,我们将 numpy 作为 num 导入,以找到线性回归梯度下降模型。

  • a = 0 是直线的截距。
  • m = 7 是直线的斜率。
  • num.random.seed(45) 用于生成随机数。
  • classifier.fit_model(x,y) 用于拟合模型。
  • plot.plot(x,classifier . predict _ model(x))用于绘制图形。
  • plot.title("梯度下降线性回归")用于给图加标题。
import numpy as num

class GradientDescentLinearRegression:
    def __init__(self, learning_rate=0.02, iterations=1000):
        self.learning_rate, self.iterations = learning_rate, iterations

    def fit_model(self, x, y):
        a = 0
        m = 7
        n = x.shape[0]
        for _ in range(self.iterations):
            a_gradient = -2 * num.sum(y - m*x + a) / n
            m_gradient = -2 * num.sum(x*(y - (m*x + a))) / n
            a = a + (self.learning_rate * a_gradient)
            m = m - (self.learning_rate * m_gradient)
        self.m, self.a = m, a

    def predict_model(self, X):
        return self.m*X + self.a
num.random.seed(45)
x = num.array(sorted(list(range(5))*20)) + num.random.normal(size=100, scale=0.10)
y = num.array(sorted(list(range(5))*20)) + num.random.normal(size=100, scale=0.20)

classifier = GradientDescentLinearRegression()
classifier.fit_model(x, y)

import matplotlib.pyplot as polt

plot.scatter(x, y, color='red')
plot.plot(x, classifier.predict_model(x))
plot.title("Gradient Descent Linear Regression")

输出:

运行上面的代码后,我们得到下面的输出,其中我们可以看到屏幕上绘制了梯度下降线性回归图。

scikit gradient decent linear regression

scikit gradient decent linear regression

您可能还想阅读 Scikit learn 上的以下教程。

因此,在本教程中,我们讨论了sci kit learn gradient descent,并且我们还涵盖了与其实现相关的不同示例。这是我们已经讨论过的例子列表。

  • Scikit 学习梯度下降
  • Scikit 学习梯度下降回归
  • Scikit 学习随机梯度下降分类器
  • Scikit 学习批次梯度下降
  • Scikit 学习迷你批次梯度下降
  • Scikit 学习随机梯度下降回归
  • Scikit 学习逻辑回归梯度下降
  • Scikit 学习梯度下降线性回归

Bijay Kumar MVPBijay Kumar

Python 是美国最流行的语言之一。我从事 Python 工作已经有很长时间了,我在与 Tkinter、Pandas、NumPy、Turtle、Django、Matplotlib、Tensorflow、Scipy、Scikit-Learn 等各种库合作方面拥有专业知识。我有与美国、加拿大、英国、澳大利亚、新西兰等国家的各种客户合作的经验。查看我的个人资料。

enjoysharepoint.com/

Scikit 学习隐马尔可夫模型

原文:https://pythonguides.com/scikit-learn-hidden-markov-model/

Python & Machine Learning training courses

在这个 Python 教程中,我们将学习如何在 python 中创建一个 scikit learn Markov 模型,我们还将涵盖这些与 Markov 模型相关的例子。我们将讨论这些话题。

  • 什么是 scikit learn 马尔可夫模型?
  • 是什么让 scikit 学会了马尔可夫模型隐藏
  • Scikit 学习隐马尔可夫模型示例

目录

什么是 scikit 学习马尔可夫模型?

在本节中,我们将了解 python 中的 Scikit learn 马尔可夫模型及其工作原理。

马尔可夫模型被定义为随机过程,而未来状态的考虑概率取决于当前过程状态。

举例:

假设你想建立一个模型,在给定猫当前状态的情况下,我们的猫处于三态的概率。

我们认为我们的猫很懒。我们定义它的状态睡觉,吃饭,便便。我们将初始概率分别设为 45%、35%和 20%。

代码:

import numpy as np
import pandas as pd
import networkx as nx
import matplotlib.pyplot as plot
%matplotlib inline

states = ['sleeping', 'eating', 'pooping']
pi = [0.45, 0.35, 0.2]
state_space = pd.Series(pi, index=states, name='states')
print(state_space)
print(state_space.sum())

运行上面的代码后,我们得到下面的输出,其中我们可以看到猫的假设状态的概率。

scikit learn markov model prediction

scikit learn Markov model prediction

下一步是定义简单地处于相同状态或移动到给定当前状态的不同状态的概率。

q_df = pd.DataFrame(columns=states, index=states)
q_df.loc[states[0]] = [0.4, 0.2, 0.4]
q_df.loc[states[1]] = [0.40, 0.40, 0.2]
q_df.loc[states[2]] = [0.40, 0.20, .4]

print(q_df)

q_f = q_df.values
print('\n', q_f, q_f.shape, '\n')
print(q_df.sum(axis=1))

scikit learn markov model transition process

scikit learn Markov model transition process

完成上述过程后,我们有了初始概率和转移概率,现在我们使用 Networkx 包创建一个马尔可夫图。

from pprint import pprint 

def _get_markov_edges(Q):
    edge = {}
    for column in Q.columns:
        for index in Q.index:
            edge[(index,column)] = Q.loc[index,column]
    return edge

edge_wt = _get_markov_edges(q_df)
pprint(edge_wt)

scikit learn markov model using networkx

scikit learn Markov model using networkx

现在我们可以创建一个 scikit 学习马尔可夫模型图。

  • graph . add _ nodes _ from(States)用于创建状态对应的节点。
  • Graph.add_edge(tmp_origin,tmp_destination,weight=v,label=v) 边代表转移概率。
Graph = nx.MultiDiGraph()

Graph.add_nodes_from(states)
print(f'Nodes:\n{Graph.nodes()}\n')

for k, v in edge_wt.items():
    tmp_origin, tmp_destination = k[0], k[1]
    Graph.add_edge(tmp_origin, tmp_destination, weight=v, label=v)
print(f'Edges:')
pprint(Graph.edges(data=True))    

position = nx.drawing.nx_pydot.graphviz_layout(Graph, prog='dot')
nx.draw_networkx(Graph, position)

edge_labels = {(n1,n2):d['label'] for n1,n2,d in Graph.edges(data=True)}
nx.draw_networkx_edge_labels(Graph , position, edge_labels=edge_labels)
nx.drawing.nx_pydot.write_dot(Graph, 'pet_dog_markov.dot')

Scikit learn markov model graph

Scikit learn Markov model graph

阅读: Scikit-learn 逻辑回归

是什么让 scikit 学会了马尔科夫模型隐藏

在本节中,我们将了解隐藏的 scikit 学习模型以及谁隐藏了马尔可夫模型。

考虑到我们的猫行为怪异,我们发现它们为什么会这样,我们的猫的行为是由于疾病,或者仅仅是它们这样做。

代码:

在这里,我们创造了一个空间,可以看到我们的猫是健康的还是生病的。

hidden_state = ['healthy', 'sick']
pi = [0.55, 0.45]
state_space = pd.Series(pi, index=hidden_state, name='states')
print(state_space)
print('\n', state_space.sum())

scikit learn markov hidden state space

scikit learn Markov hidden state space

下一步,我们将为隐藏状态创建一个转换矩阵。

a1_df = pd.DataFrame(columns=hidden_state, index=hidden_state)
a1_df.loc[hidden_state[0]] = [0.7, 0.3]
a1_df.loc[hidden_state[1]] = [0.4, 0.6]

print(a1_df)

a1 = a1_df.values
print('\n', a1, a1.shape, '\n')
print(a1_df.sum(axis=1))

scikit learn transition matrix hidden state

scikit learn transition matrix hidden state

在这一步,我们创建一个发射和观察矩阵。我们创建的矩阵是 axb 的大小。a 是隐藏状态的数量,b 是可观察状态的数量。

observable_state = states

b1_df = pd.DataFrame(columns=observable_state, index=hidden_state)
b1_df.loc[hidden_state[0]] = [0.3, 0.5, 0.2]
b1_df.loc[hidden_state[1]] = [0.3, 0.3, 0.4]

print(b1_df)

b1 = b1_df.values
print('\n', b1, b1.shape, '\n')
print(b1_df.sum(axis=1))

scikit learn emmision and observable matrix

scikit learn emission and observable matrix

在这一步中,我们将创建图形边和图形对象,从中我们可以创建一个完整的图形。

hide_edges_wt = _get_markov_edges(a1_df)
pprint(hide_edges_wt)

emit_edges_wt = _get_markov_edges(b1_df)
pprint(emit_edges_wt)

scikit learn hidden state graph

scikit learn hidden state graph

这里我们可以画出隐马尔可夫模型的完整图形。

G = nx.MultiDiGraph()

G.add_nodes_from(hidden_state)
print(f'Nodes:\n{G.nodes()}\n')

for k, v in hide_edges_wt.items():
    tmp_origin, tmp_destination = k[0], k[1]
    G.add_edge(tmp_origin, tmp_destination, weight=v, label=v)

for k, v in emit_edges_wt.items():
    tmp_origin, tmp_destination = k[0], k[1]
    G.add_edge(tmp_origin, tmp_destination, weight=v, label=v)

print(f'Edges:')
pprint(G.edges(data=True))    

pos = nx.drawing.nx_pydot.graphviz_layout(G, prog='neato')
nx.draw_networkx(G, pos)

scikit learn markov  hidden  model

scikit learn Markov hidden model

阅读: Scikit 学习决策树

Scikit 学习隐马尔可夫模型示例

在本节中,我们将了解 scikit 在 python 中学习隐马尔可夫模型的例子。

scikit 学习隐马尔可夫模型是一个过程,而未来的未来概率取决于当前状态。

代码:

在下面的代码中,我们将导入一些库,并从中创建一个隐马尔可夫模型。

状态空间= pd。系列(pi,index=states,name='states') 用于创建状态空间和初始状态空间概率。

edge[(index,column)] = Q.loc[index,column] 用于创建映射转移概率数据帧的函数。

graph . add _ nodes _ from(States)**用于添加数据**帧对应的节点。

Graph.add_edge(tmp_origin,tmp_destination,weight=v,label=v) edges 用于表示过渡属性。

import numpy as np
import pandas as pd
import networkx as nx
import matplotlib.pyplot as plot
%matplotlib inline

states = ['sleeping', 'eating', 'pooping']
pi = [0.45, 0.35, 0.2]
state_space = pd.Series(pi, index=states, name='states')
print(state_space)
print(state_space.sum())
q_df = pd.DataFrame(columns=states, index=states)
q_df.loc[states[0]] = [0.4, 0.2, 0.4]
q_df.loc[states[1]] = [0.40, 0.40, 0.2]
q_df.loc[states[2]] = [0.40, 0.20, .4]

print(q_df)

q_f = q_df.values
print('\n', q_f, q_f.shape, '\n')
print(q_df.sum(axis=1))
from pprint import pprint 

def _get_markov_edges(Q):
    edge = {}
    for column in Q.columns:
        for index in Q.index:
            edge[(index,column)] = Q.loc[index,column]
    return edge

edge_wt = _get_markov_edges(q_df)
pprint(edge_wt)
Graph = nx.MultiDiGraph()

Graph.add_nodes_from(states)
print(f'Nodes:\n{Graph.nodes()}\n')

for k, v in edge_wt.items():
    tmp_origin, tmp_destination = k[0], k[1]
    Graph.add_edge(tmp_origin, tmp_destination, weight=v, label=v)
print(f'Edges:')
pprint(Graph.edges(data=True))    

position = nx.drawing.nx_pydot.graphviz_layout(Graph, prog='dot')
nx.draw_networkx(Graph, position)

edge_labels = {(n1,n2):d['label'] for n1,n2,d in Graph.edges(data=True)}
nx.draw_networkx_edge_labels(Graph , position, edge_labels=edge_labels)
nx.drawing.nx_pydot.write_dot(Graph, 'pet_dog_markov.dot') 

输出:

运行上面的代码后,我们得到下面的输出,可以看到 Markov 模型被绘制在屏幕上。

scikit learn hidden markov model

scikit learn hidden Markov model

您可能还想阅读以下 Scikit 学习教程。

因此,在本教程中,我们讨论了sci kit learn hidden Markov model,并且我们还涵盖了与其实现相关的不同示例。这是我们已经讨论过的例子列表。

  • 什么是 scikit learn 马尔可夫模型?
  • 是什么让 scikit 学会了马尔可夫模型隐藏
  • Scikit 学习隐马尔可夫模型的例子。

Bijay Kumar MVPBijay Kumar

Python 是美国最流行的语言之一。我从事 Python 工作已经有很长时间了,我在与 Tkinter、Pandas、NumPy、Turtle、Django、Matplotlib、Tensorflow、Scipy、Scikit-Learn 等各种库合作方面拥有专业知识。我有与美国、加拿大、英国、澳大利亚、新西兰等国家的各种客户合作的经验。查看我的个人资料。

enjoysharepoint.com/

Scikit 学习隐藏层尺寸

原文:https://pythonguides.com/scikit-learn-hidden_layer_sizes/

Python & Machine Learning training courses

在这个Python 教程中,我们将学习scikit 如何在 Python 中学习 hidden _ layer _ sizes的工作原理,我们还将涵盖与 hidden_layers_sizes 相关的不同示例。此外,我们将涵盖这些主题。

  • Scikit 学习隐藏层尺寸
  • Scikit 学习 hidden _ layer _ sizes 示例

目录

Scikit 学习 hidden _ layer _ size

在本节中,我们将了解 scikit learn hidden_layer_sizes 如何在 Python 中工作。Scikit learnhidden _ layer _ sizes 定义为一个参数,允许我们设置神经网络分类器中的层数和节点数。

代码:

在下面的代码中,我们将从 sklearn.datasets 导入 make _ blobs,通过它我们可以设置层数和节点数。

n_samples = 200 用于设置样本数。

fig,axis = plot.subplots() 是用来在屏幕上绘制图形的 subplot。

import matplotlib.pyplot as plot
from sklearn.datasets import make_blobs

n_samples = 200
blob_centers = ([1, 1], [3, 4], [1, 3.3], [3.5, 1.8])
data, labels = make_blobs(n_samples = n_samples,
   centers = blob_centers,
   cluster_std = 0.5,
   random_state = 0)

colours = ('red', 'blue', "green", "orange")
fig, axis = plot.subplots()

for n_class in range(len(blob_centers)):
   axis.scatter(data[labels == n_class][: , 0],
      data[labels == n_class][: , 1],
      c = colours[n_class],
      s = 30,
      label = str(n_class))

输出:

运行上面的代码后,我们得到下面的输出,其中我们可以看到屏幕上绘制了散点。

scikit learn hidden_layer_sizes

scikit learn hidden_layer_sizes

另外,检查: Scikit 学习岭回归

Scikit 学习 hidden_layer_sizes 示例

在本节中,我们将了解 scikit 如何在 Python 中学习 hidden_layer_sizes 示例。

神经网络中的 hidden_layer_sizes 作为一个参数,允许我们设置层数。

例 1:

在下面的代码中,我们将从 sklearn.model_selection 导入 tain_test_aplit,通过它我们可以拆分训练和测试数据集。

X = pd。DataFrame(cal_housing.data,columns = cal _ housing . feature _ names)用于创建数据集。

X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.1,random_state=0) 用于拆分训练和测试数据。

est = make _ pipeline(quantile transformer()、MLPRegressor(hidden_layer_sizes =(30,15)、learning_rate_init=0.01、early_stopping=True、random_state=0),用于制作管道,在这里面我们给出 hidden _ layer _ sizes。

import pandas as pds
from sklearn.datasets import fetch_california_housing
from sklearn.model_selection import train_test_split

calhousing = fetch_california_housing()
x = pds.DataFrame(calhousing.data, columns=calhousing.feature_names)
y = calhousing.target

y -= y.mean()

x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2, random_state=0)
from time import time
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import QuantileTransformer
from sklearn.neural_network import MLPRegressor

print("Train MLPRegressor")
tim = time()
estm = make_pipeline(
    QuantileTransformer(),
    MLPRegressor(
        hidden_layer_sizes=(40, 25),
        learning_rate_init=0.02,
        early_stopping=True,
        random_state=0,
    ),
)
estm.fit(x_train, y_train)
print(f"done in {time() - tim:.4f}s")
print(f"Testing R2 score: {estm.score(x_test, y_test):.2f}")

输出:

运行上面的代码后,我们得到了下面的输出,其中我们可以看到测试分数被打印在屏幕上。

scikit learn hidden_layer_sizes example

scikit learn hidden_layer_sizes example

例 2:

在下面的代码中,我们将从 sklearn.inspection 导入 partial _ dependence,通过它我们可以计算部分依赖图。

  • displays.figure_。suptitle("房屋价值对非位置特征的部分依赖性\n " "对于加利福尼亚住房数据集,使用 mlpre pressor ")用于显示图形子标题。
  • displays.figure_。subplots _ adjust(hspace = 0.3)用于绘制图形。
import matplotlib.pyplot as plt
from sklearn.inspection import partial_dependence
from sklearn.inspection import PartialDependenceDisplay

print("Compute partial dependence plots...")
tim = time()
features = ["MedInc", "AveOccup", "HouseAge", "AveRooms"]
displays = PartialDependenceDisplay.from_estimator(
    est,
    X_train,
    features,
    kind="both",
    subsample=50,
    n_jobs=3,
    grid_resolution=20,
    random_state=0,
    ice_lines_kw={"color": "tab:green", "alpha": 0.2, "linewidth": 0.5},
    pd_line_kw={"color": "tab:red", "linestyle": "--"},
)
print(f"done in {time() - tim:.3f}s")
displays.figure_.suptitle(
    "Partial dependence of house value on non-location features\n"
    "for the California housing dataset, with MLPRegressor"
)
displays.figure_.subplots_adjust(hspace=0.3)

输出:

运行上述代码后,我们得到以下输出,其中我们可以看到屏幕上绘制了 California housing 数据集的房价对非位置要素的部分依赖关系。

scikit learn hidden_layer_sizes examples

scikit learn hidden_layer_sizes examples

您可能还想阅读以下 Scikit 学习教程。

因此,在本教程中,我们讨论了Scikit learn hidden _ layer _ sizes,我们还涵盖了与其实现相关的不同示例。这是我们已经讨论过的例子列表。

  • Scikit 学习隐藏层尺寸
  • Scikit 学习 hidden _ layer _ sizes 示例

Bijay Kumar MVPBijay Kumar

Python 是美国最流行的语言之一。我从事 Python 工作已经有很长时间了,我在与 Tkinter、Pandas、NumPy、Turtle、Django、Matplotlib、Tensorflow、Scipy、Scikit-Learn 等各种库合作方面拥有专业知识。我有与美国、加拿大、英国、澳大利亚、新西兰等国家的各种客户合作的经验。查看我的个人资料。

enjoysharepoint.com/

Scikit 学习层次聚类

原文:https://pythonguides.com/scikit-learn-hierarchical-clustering/

Python & Machine Learning training courses

在本 Python 教程中,我们将学习如何让 Scikit 学习 Python 中的层次聚类,我们还将涵盖与层次聚类相关的不同示例。我们将讨论这些话题。

  • Scikit 学习层次聚类
  • Scikit 学习分层聚类示例
  • Scikit 了解分层聚类功能
  • Scikit 学习层次聚类树状图
  • Scikit 学习层次聚类链接
  • Scikit 学习层次分类

学习什么是 Python 中的 Scikit 学习

目录

Scikit 学习层次聚类

在本节中,我们将了解如何让 scikit 学习 python 中的层次聚类。

分层聚类的定义是,它是一种将相似对象分类成组的算法。

集群的端点是一组集群,并且每个集群都不同于其他集群。

代码:

在下面的代码中,我们将导入一些库 import time 作为 timeimport numpy 作为 npimport matplotlib.pyplot 作为 plot ,从中我们定义数据的结构。

  • print(" Compute structured hierarchical clustering…)用于计算聚类并在屏幕上打印。

  • plot.figure() 用于在屏幕上绘制图形。

  • p3。Axes3D(fig) 用于在屏幕上绘制 3d fig。

  • plot . title(" With connectivity constraints(time % . 2fs)" % elapsed _ time)用来给图加标题。

import time as time
import numpy as np
import matplotlib.pyplot as plot
import mpl_toolkits.mplot3d.axes3d as p3
from sklearn.cluster import AgglomerativeClustering
from sklearn.datasets import make_swiss_roll

connectivity = kneighbors_graph(X, n_neighbors=12, include_self=False)

print("Compute structured hierarchical clustering...")
st = time.time()
ward = AgglomerativeClustering(
    n_clusters=8, connectivity=connectivity, linkage="ward"
).fit(X)
elapsed_time = time.time() - st
label = ward.labels_
print("Elapsed time: %.2fs" % elapsed_time)
print("Number of points: %i" % label.size)

fig = plot.figure()
axis = p3.Axes3D(fig)
axis.view_init(8, -90)
for l in np.unique(label):
    axis.scatter(
        X[label == l, 0],
        X[label == l, 1],
        X[label == l, 2],
        color=plt.cm.jet(float(l) / np.max(label + 1)),
        s=20,
        edgecolor="k",
    )
plot.title("With connectivity constraints (time %.2fs)" % elapsed_time)

plot.show()

输出:

运行上面的代码后,我们得到了下面的输出,从中我们可以看到层次聚类是通过约束的连通性完成的。

scikit learn hierarchical clustering

scikit learn hierarchical clustering

阅读sci kit-学习逻辑回归

Scikit 学习层次聚类示例

在本节中,我们将学习如何让 scikit 学习 python 中的层次聚类示例。

  • 众所周知,层次聚类将相似的对象分成不同的组。它将每个集群视为一个单独的集群。
  • 它识别彼此非常接近的两个集群。合并两个最相似的聚类。

代码:

在下面的代码中,我们将导入一些库,从中我们可以绘制层次聚类图。

  • X = np.array() 用于创建数据集。
  • from sklearn.cluster 导入聚合集群用于从集群导入类。
  • clusters.fit_predict(X) 用于预测每个数据点所属的聚类。
  • plt.scatter(X[:,0],X[:,1],c=clusters.labels_,cmap='rainbow') 用于在屏幕上绘制聚类。
import matplotlib.pyplot as plt
import pandas as pd
%matplotlib inline
import numpy as np
X = np.array([[10,3],
    [15,15],
    [20,12],
    [30,10],
    [35,30],
    [40,70],
    [45,80],
    [50,78],
    [55,55],
    [60,91],])
from sklearn.cluster import AgglomerativeClustering
clusters = AgglomerativeClustering(n_clusters=2, affinity='euclidean', linkage='ward')
clusters.fit_predict(X)
print(clusters.labels_)
plt.scatter(X[:,0],X[:,1], c=clusters.labels_, cmap='rainbow')

输出:

运行上述代码后,我们得到以下输出,其中我们可以看到显示了两个集群组,前五个集群在一起,后五个集群在一起。

scikit learn hierarchical clustering example

scikit learn hierarchical clustering example

Read Scikit-learn Vs Tensorflow

Scikit 学习层次聚类特性

在本节中,我们将了解 python 中的 scikit learn 层次聚类特性。

python 中 sci kit learn hierarchical clusterin 的主要特性有:

  • 删除问题
  • 数据层次
  • 通过指针分级
  • 最小化磁盘输入和输出
  • 快速导航
  • 记录之间的预定义关系
  • 难以重组
  1. 删除问题:删除问题发生在父集群被删除,然后子集群被自动删除,因为子集群连接到父集群。

2.数据层次:层次聚类的所有数据都表示为一棵层次树。

3.通过指针的层次结构:指针用于链接记录。指针指出哪条记录是父记录,哪条是子记录。

4.最小化磁盘输入和输出:父子记录在存储设备上存储得非常接近,这样可以最小化硬盘输入和输出。

5.快速导航:父节点与子节点之间的距离非常小,这就是数据性能得以提高的原因。并且在数据库中导航非常快。

6.记录间的预定义关系:所有的关系都是预定义的。在层次聚类中,所有的根节点、父节点都是在数据库中预定义的。

7.难以重组:在分层集群中,由于父子关系,很难重组数据库。子节点连接到父节点,如果我们重新组织数据,父节点和子节点之间的关系会变得不匹配。

阅读 Scikit 学习决策树

Scikit 学习层次聚类树状图

本节我们将学习如何用 python 让 scikit 学习层次聚类树状图。

分层聚类用于构建聚类树来表示数据,其中每个聚类与最近的相似节点相链接,并形成一个树状图。

代码:

在下面的代码中,我们将导入一些库 import numpy as np ,从 matplotlib 导入 pyplot as plot ,从 scipy.cluster.hierarchy 导入树状图由此我们构建了一个树状图。

  • **树状图(linkagematrix,kwargs) 用于绘制树状图。
  • model = agglomerate clustering(distance_threshold = 0,n_clusters=None) 用于设置 distance _ threshold 以确保我们完成完整的树。
  • plot_dendrogram(model,truncate_mode="level ",p=3) 用于绘制树状图的前三级。
import numpy as np
from matplotlib import pyplot as plot
from scipy.cluster.hierarchy import dendrogram
from sklearn.datasets import load_iris
from sklearn.cluster import AgglomerativeClustering

def plot_dendrogram(model, **kwargs):

    count = np.zeros(model.children_.shape[0])
    nsamples = len(model.labels_)
    for i, merge in enumerate(model.children_):
        currentcount = 0
        for child_idx in merge:
            if child_idx < nsamples:
                currentcount += 1  
            else:
                currentcount += count[child_idx - nsamples]
        count[i] = currentcount

    linkagematrix = np.column_stack(
        [model.children_, model.distances_, count]
    ).astype(float)

    dendrogram(linkagematrix, **kwargs)

iris = load_iris()
X = iris.data

model = AgglomerativeClustering(distance_threshold=0, n_clusters=None)

model = model.fit(X)
plot.title("Hierarchical Clustering Dendrogram")
plot_dendrogram(model, truncate_mode="level", p=3)
plot.xlabel("Number of points in node (or index of point if no parenthesis).")

输出:

运行上面的代码后,我们得到下面的输出,我们可以看到屏幕上显示了一个树状图。

scikit learn hierarchical clustering dendrogram

scikit learn hierarchical clustering dendrogram

读取 Scikit 学习准确度 _ 分数

Scikit 学习层次聚类联动

在这一节中,我们将学习 python 中的 scikit learn 层次聚类链接。

分层聚类用于构建聚类树来表示数据,其中每个聚类与最近的相似节点相链接。

在层次链接聚类中,两个聚类之间的链接是两点之间的最长距离。

代码:

在下面的代码中,我们将从 scipy 导入树图、链接,还将从 matplotlib 导入 pyplot 作为 plot。

我们可以在两个集群之间创建一个 ward 链接,并绘制该集群的图形。

from scipy.cluster.hierarchy import dendrogram, linkage
from matplotlib import pyplot as plot
x = [[i] for i in [4, 12, 0, 6, 1, 11, 11, 0]]
Z = linkage(x, 'ward')
figure = plot.figure(figsize=(25, 10))
den = dendrogram(Z)

运行上面的代码后,我们得到下面的输出,我们可以看到屏幕上绘制了一个 ward clusters 树状图。

scikit learn hierarchical clustering ward linkage

scikit learn hierarchical clustering ward linkage

在这里,我们可以在两个集群之间创建一个链接集群,并绘制这些集群的图形。

Z = linkage(x, 'single')
figure = plot.figure(figsize=(25, 10))
den = dendrogram(Z)
plot.show()

运行上面的代码后,我们得到了下面的输出,其中我们可以看到以树形图的形式创建了一个链接。

scikit learn hierarchical clustering single linkage

scikit learn hierarchical clustering single linkage

阅读: Scikit 学习线性回归

Scikit 学习层次分类

在本节中,我们将学习 python 中的scikit learn hierarchical class ification

等级分类被定义为根据等级或顺序对事物进行聚类的系统。

代码:

在这段代码中,我们将导入一些库,从中我们可以创建分类器并进行分层分类。

  • 标准定标器()。fit _ transform(x)用于拟合数据。
  • x_train,x_test,y_train,y_test = train_test_split(x,y,test_size=0.4,random_state=42) 它是一个预处理数据集,将 t he 数据拆分为训练和测试部分。
  • ax.scatter(x_train[:,0],x_train[:,1],c=y_train,cmap=cm_bright,edgecolors="k") 它只是绘制训练点。
  • ax.scatter(x_test[:,0],x_test[:,1],c=y_test,cmap=cm_bright,alpha=0.6,edgecolors="k") 它只是绘制测试点。
import numpy as np
import matplotlib.pyplot as plot
from matplotlib.colors import ListedColormap
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.datasets import make_moons, make_circles, make_classification
from sklearn.neural_network import MLPClassifier
from sklearn.neighbors import KNeighborsClassifier
from sklearn.svm import SVC
from sklearn.gaussian_process import GaussianProcessClassifier
from sklearn.gaussian_process.kernels import RBF
from sklearn.tree import DecisionTreeClassifier
from sklearn.ensemble import RandomForestClassifier, AdaBoostClassifier
from sklearn.naive_bayes import GaussianNB
from sklearn.discriminant_analysis import QuadraticDiscriminantAnalysis

h = 0.02  

classifiernames = [
    "Nearest Neighbors",
    "Linear SVM",
    "RBF SVM",
    "Gaussian Process",
    "Decision Tree",
    "Random Forest",
    "Neural Net",
    "AdaBoost",
    "Naive Bayes",
    "QDA",
]

classifiers = [
    KNeighborsClassifier(3),
    SVC(kernel="linear", C=0.025),
    SVC(gamma=2, C=1),
    GaussianProcessClassifier(1.0 * RBF(1.0)),
    DecisionTreeClassifier(max_depth=5),
    RandomForestClassifier(max_depth=5, n_estimators=10, max_features=1),
    MLPClassifier(alpha=1, max_iter=1000),
    AdaBoostClassifier(),
    GaussianNB(),
    QuadraticDiscriminantAnalysis(),
]

x, y = make_classification(
    n_features=2, n_redundant=0, n_informative=2, random_state=1, n_clusters_per_class=1
)
rng = np.random.RandomState(2)
x += 2 * rng.uniform(size=x.shape)
linearly_separable = (x, y)

datasets = [
    make_moons(noise=0.3, random_state=0),
    make_circles(noise=0.2, factor=0.5, random_state=1),
    linearly_separable,
]

figure = plot.figure(figsize=(27, 9))
i = 1

for ds_cnt, ds in enumerate(datasets):

    x, y = ds
    x = StandardScaler().fit_transform(x)
    x_train, x_test, y_train, y_test = train_test_split(
        x, y, test_size=0.4, random_state=42
    )

    x_min, x_max = x[:, 0].min() - 0.5, x[:, 0].max() + 0.5
    y_min, y_max = x[:, 1].min() - 0.5, x[:, 1].max() + 0.5
    xx, yy = np.meshgrid(np.arange(x_min, x_max, h), np.arange(y_min, y_max, h))
    cm = plot.cm.RdBu
    cm_bright = ListedColormap(["#FF0000", "#0000FF"])
    ax = plt.subplot(len(datasets), len(classifiers) + 1, i)
    if ds_cnt == 0:
        ax.set_title("Input data")

    ax.scatter(x_train[:, 0], x_train[:, 1], c=y_train, cmap=cm_bright, edgecolors="k")

    ax.scatter(
        x_test[:, 0], x_test[:, 1], c=y_test, cmap=cm_bright, alpha=0.6, edgecolors="k"
    )
    ax.set_xlim(xx.min(), xx.max())
    ax.set_ylim(yy.min(), yy.max())
    ax.set_xticks(())
    ax.set_yticks(())
    i += 1

    for name, clf in zip(classifiernames, classifiers):
        ax = plt.subplot(len(datasets), len(classifiers) + 1, i)
        clf.fit(x_train, y_train)
        score = clf.score(x_test, y_test)

        if hasattr(clf, "decision_function"):
            Z = clf.decision_function(np.c_[xx.ravel(), yy.ravel()])
        else:
            Z = clf.predict_proba(np.c_[xx.ravel(), yy.ravel()])[:, 1]

        Z = Z.reshape(xx.shape)
        ax.contourf(xx, yy, Z, cmap=cm, alpha=0.8)

        # Plot the training points
        ax.scatter(
            x_train[:, 0], x_train[:, 1], c=y_train, cmap=cm_bright, edgecolors="k"
        )

        ax.scatter(
            x_test[:, 0],
            x_test[:, 1],
            c=y_test,
            cmap=cm_bright,
            edgecolors="k",
            alpha=0.6,
        )

        ax.set_xlim(xx.min(), xx.max())
        ax.set_ylim(yy.min(), yy.max())
        ax.set_xticks(())
        ax.set_yticks(())
        if ds_cnt == 0:
            ax.set_title(name)
        ax.text(
            xx.max() - 0.3,
            yy.min() + 0.3,
            ("%.2f" % score).lstrip("0"),
            size=15,
            horizontalalignment="right",
        )
        i += 1

plot.tight_layout()
plot.show()

输出:

运行上面的代码后,我们得到下面的输出,我们可以看到屏幕上的分类已经完成。

scikit learn hierarchical classification

scikit learn hierarchical classification

另外,看看 scikit learn 上的更多教程。

因此,在本教程中,我们讨论了sci kit learn hierarchical clustering,我们还介绍了与其实现相关的不同示例。这是我们已经讨论过的例子列表。

  • Scikit 学习层次聚类
  • Scikit 学习分层聚类示例
  • Scikit 了解分层聚类功能
  • Scikit 学习层次聚类树状图
  • Scikit 学习层次聚类链接
  • Scikit 学习层次分类

Bijay Kumar MVPBijay Kumar

Python 是美国最流行的语言之一。我从事 Python 工作已经有很长时间了,我在与 Tkinter、Pandas、NumPy、Turtle、Django、Matplotlib、Tensorflow、Scipy、Scikit-Learn 等各种库合作方面拥有专业知识。我有与美国、加拿大、英国、澳大利亚、新西兰等国家的各种客户合作的经验。查看我的个人资料。

enjoysharepoint.com/

Scikit 学习超参数调谐

原文:https://pythonguides.com/scikit-learn-hyperparameter-tuning/

Python & Machine Learning training courses

在本 Python 教程中,我们将学习 Scikit learn 超参数调优,我们还将使用 Scikit learn 涵盖与超参数调优相关的不同示例。此外,我们将涵盖这些主题。

  • Scikit 学习超参数调谐
  • Scikit 学习随机森林超参数
  • Scikit 学习逻辑回归超参数调整
  • Scikit 学习神经网络超参数调整
  • Scikit 学习线性回归超参数
  • Scikit 学习 SVM 超参数
  • Scikit 学习超参数估计
  • Scikit 学习超参数优化

目录

Scikit 学习超参数调整

在本节中,我们将了解 python 中的 scikit learn 超参数调优工作

超参数调整被定义为作为参数传递给估计器类的构造函数的参数。

代码:

  • 在下面的代码中,我们将从 sklearn.utils.fixes 导入 loguniform,通过它我们比较超参数估计的随机搜索和网格搜索。
  • load_digits(return_X_y=True,n_class=3) 用于加载数据。
  • clf = SGD classifier(loss = " hinge ",penalty="elasticnet ",fit_intercept=True) 用于构建分类器。
  • random _ search = RandomizedSearchCV(clf,param_distributions=param_dist,n_iter=n_iter_search) 用于运行随机大小。
  • grid _ search = GridSearchCV(clf,param_grid=param_grid) 用于运行网格搜索。
import numpy as np
from time import time
import scipy.stats as stats
from sklearn.utils.fixes import loguniform

from sklearn.model_selection import GridSearchCV, RandomizedSearchCV
from sklearn.datasets import load_digits
from sklearn.linear_model import SGDClassifier

x, y = load_digits(return_X_y=True, n_class=3)

clf = SGDClassifier(loss="hinge", penalty="elasticnet", fit_intercept=True)

def report(results, n_top=3):
    for i in range(1, n_top + 1):
        candidate = np.flatnonzero(results["rank_test_score"] == i)
        for candidate in candidate:
            print("Model with rank: {0}".format(i))
            print(
                "Mean validation score: {0:.3f} (std: {1:.3f})".format(
                    results["mean_test_score"][candidate],
                    results["std_test_score"][candidate],
                )
            )
            print("Parameters: {0}".format(results["params"][candidate]))
            print("")

param_dist = {
    "average": [True, False],
    "l1_ratio": stats.uniform(0, 1),
    "alpha": loguniform(1e-2, 1e0),
}

n_iter_search = 15
random_search = RandomizedSearchCV(
    clf, param_distributions=param_dist, n_iter=n_iter_search
)

start = time()
random_search.fit(x, y)
print(
    "RandomizedSearchCV took %.2f seconds for %d candidates parameter settings."
    % ((time() - start), n_iter_search)
)
report(random_search.cv_results_)

param_grid = {
    "average": [True, False],
    "l1_ratio": np.linspace(0, 1, num=10),
    "alpha": np.power(10, np.arange(-2, 1, dtype=float)),
}

grid_search = GridSearchCV(clf, param_grid=param_grid)
start = time()
grid_search.fit(x, y)

print(
    "GridSearchCV took %.2f seconds for %d candidate parameter settings."
    % (time() - start, len(grid_search.cv_results_["params"]))
)
report(grid_search.cv_results_)

输出:

运行上面的代码后,我们得到下面的输出,其中我们可以看到在屏幕上对超参数的随机搜索和网格搜索进行了比较。

scikit learn hyperparameter tuning

scikit learn hyperparameter tuning

另外,请阅读: Scikit-learn Vs Tensorflow

Scikit 学习随机森林超参数

在本节中,我们将了解 scikit 在 python 中学习随机森林超参数的工作方式

在 scikit 中,学习超参数包括决策树的数量和在节点分裂时通过分裂每棵树所考虑的特征的数量。

代码:

在下面的代码中,我们将从 sklearn.ensemble 中导入 RandomForestRegressor,通过它我们可以看到当前使用的超参数。

from sklearn.ensemble import RandomForestRegressor
rf = RandomForestRegressor(random_state = 42)
from pprint import pprint

print('Hyperparameters currently in use:\n')
pprint(rf.get_params())

输出:

运行上面的代码后,我们得到下面的输出,其中我们可以看到当前使用的超参数被打印在屏幕上。

scikit learn random forest hyperparameter tuning

scikit learn random forest hyperparameter tuning

阅读: Scikit-learn 逻辑回归

Scikit 学习逻辑回归超参数整定

在本节中,我们将了解 python 中的 scikit learn 逻辑回归超参数调整

  • 逻辑回归是一种用于描述数据的预测性分析。它用于评估模型性能的指标,以决定最佳超参数。
  • 代码:
  • 在下面的代码中,我们将从 sklearn 导入 linear_model,通过它我们可以评估模型性能的度量,以决定最佳的超参数。
  • dataset = datasets . load _ wine()用于加载数据集。
  • 五氯苯甲醚=分解。PCA() 主成分分析用于降低特征维数。
  • print('BestPenalty:',clf_GS.best_estimator_。get _ params([' logistic _ Regression _ _ penalty '])用于在屏幕上打印最佳超参数。
import numpy as np
from sklearn import linear_model, decomposition, datasets
from sklearn.pipeline import Pipeline
from sklearn.model_selection import GridSearchCV
from sklearn.preprocessing import StandardScaler
dataset = datasets.load_wine()
X = dataset.data
y = dataset.target
pca = decomposition.PCA()
logistic_Regression = linear_model.LogisticRegression()
pipe = Pipeline(steps=[('std_slc', std_slc),
                       ('pca', pca),
                       ('logistic_Regression', logistic_Regression)])
n_components = list(range(1,X.shape[1]+1,1))
C = np.logspace(-4, 4, 50)
penalty = ['l1', 'l2']
parameters = dict(pca__n_components=n_components,
                      logistic_Regression__C=C,
                      logistic_Regression__penalty=penalty)
clf_GS = GridSearchCV(pipe, parameters)
clf_GS.fit(X, y)
print('Best Penalty:', clf_GS.best_estimator_.get_params()['logistic_Regression__penalty'])
print('Best C:', clf_GS.best_estimator_.get_params()['logistic_Regression__C'])
print('Best Number Of Components:', clf_GS.best_estimator_.get_params()['pca__n_components'])
print(); print(clf_GS.best_estimator_.get_params()['logistic_Regression'])

输出:

运行上面的代码后,我们得到下面的输出,其中我们可以看到 hyperparameter 的最佳值被打印在屏幕上。

scikit learn logistic regression hyperparameter tuning

scikit learn logistic regression hyperparameter tuning

阅读: Scikit 学习决策树

Scikit 学习神经网络超参数整定

在本节中,我们将了解 scikit 如何在 python 中学习神经网络超参数调整。

神经网络超参数调整被定义为多个超参数,例如多个隐藏神经元。

代码:

在下面的代码中,我们将从 sklearn.neural_network 导入 MLPClassifier,通过它我们可以创建一个神经网络超参数调整。

from sklearn.neural_network import MLPClassifier
x = [[0., 0.], [1., 1.]]
y = [0, 1]
classifier = MLPClassifier(solver='lbfgs', alpha=1e-5,
                    hidden_layer_sizes=(5, 2), random_state=1)

classifier.fit(x, y)
classifier.predict([[2., 2.], [-1., -2.]])
[coef.shape for coef in clf.coefs_]
classifier.predict_proba([[2., 2.], [1., 2.]])

输出:

运行上述代码后,我们得到以下输出,其中我们可以看到神经网络超参数调整打印在屏幕上。

scikit learn neural network hyperparameter tuning

scikit learn neural network hyperparameter tuning

Scikit 学习线性回归超参数

在本节中,我们将了解 scikit 如何在 python 中学习线性回归超参数的工作方式

超参数是一个寻找理想模型架构的过程。scikit 学习线性回归是一种线性建模方法。

代码:

在下面的代码中,我们将导入 pandas 作为 pd,导入 numpy 作为 np 来创建模型。

  • diabetes = datasets . load _ diabetes()用于创建数据集。
  • df.head() 用于打印前五行。
import numpy as np
import pandas as pd
import matplotlib.pylab as plt
%matplotlib inline
import sklearn
from sklearn import datasets
diabetes = datasets.load_diabetes()
df=pd.DataFrame(diabetes.data)
df.columns= diabetes.feature_names

df['diabetes_measure']=diabetes.target
df.head()

运行上面的代码后,我们得到下面的输出,从中我们可以看到数据集的前五行被打印在屏幕上。

scikit learn linear regression hyperparameter dataset

scikit learn linear regression hyperparameter dataset

  • x=df.iloc[:,:-1] 用于创建特征矩阵 x
  • y=df.iloc[:,-1] 用于创建响应向量 y
  • b = x.iloc[:,2] 用于将数组整形为二维。
  • 从 sklearn.linear_model 导入 LinearRegression 导入线性模型的 LinearRegression 类。
  • plt.figure(figsize=(10,6)) 用于在散点图上绘制回归线。
 x=df.iloc[:,:-1]

y=df.iloc[:,-1]
b = x.iloc[:,2]
b=b[:,np.newaxis]

y= df.iloc[:,-1]
y=y[:,np.newaxis]

from sklearn.linear_model import LinearRegression

simple_lr = LinearRegression()

simple_lr = LinearRegression().fit(b,y)

predicted_y = simple_lr.predict(b)

plt.figure(figsize=(10,6))
plt.scatter(b, y)
plt.plot(b, predicted_y, c='r')
plt.title('Scatter plot and a Simple Linear Regression Model')
plt.ylabel("y")
plt.xlabel("b")
plt.show()

运行上面的代码后,我们得到了下面的输出,其中我们可以看到屏幕上绘制了回归线。

scikit learn linear regression hyperparameter scatter plot

scikit learn linear regression hyperparameter scatter plot

  • 这里从 sklearn.model_selection 导入 cross_val_score 用于从 model_selection 导入 cross_val_score 函数。
  • cross_val_score(simple_lr,b,y,scoring = ' neg _ mean _ squared _ error ',cv=10) 用于在一个对象中存储十个分数。
from sklearn.model_selection import cross_val_score
mse= cross_val_score(simple_lr,b,y,scoring='neg_mean_squared_error',cv=10)
mse.mean()

运行上面的代码后,我们得到了下面的输出,其中我们可以看到模型的平均值显示了作为理想模型的线性回归。

scikit learn linear regression hyperparameter tuning

scikit learn linear regression hyperparameter tuning

阅读: Scikit 学习层次聚类

Scikit 学习 SVM 超参数

在本节中,我们将了解 Scikit 如何在 Python 中学习 SVM 超参数的工作方式

  • 在前进之前,我们应该有一个关于 SVM 的知识。SVM 代表支持向量机。
  • SVM 被用作个人观察的坐标。它用于分类和回归。
  • SVM 超参数定义为一个参数,其值用于控制学习过程。

代码:

在下面的代码中,我们将从 sklearn.svm 中导入 SVC,作为个体观测的坐标。

超参数被定义为作为参数传递给估计器类的构造函数的参数。

base _ estimator = SVC(gamma = ' scale ')gamma 用于支持向量分类器。

from sklearn.datasets import make_classification
from sklearn.svm import SVC
from sklearn.experimental import enable_halving_search_cv 
from sklearn.model_selection import HalvingGridSearchCV
import pandas as pd
parameter_grid= {'kernel': ('linear', 'rbf'),
             'C': [1, 10, 100]}
base_estimator = SVC(gamma='scale')
X, y = make_classification(n_samples=1000)
sh = HalvingGridSearchCV(base_estimator, parameter_grid, cv=5,
                         factor=2, min_resources=20).fit(X, y)
sh.n_resources_

运行上述代码后,我们得到以下输出,其中我们可以看到屏幕上打印了 scikit 学习 SVM 超参数资源。

scikit learn SVM hyperparameter

scikit learn SVM hyperparameter

阅读: Scikit 学习随机森林

Scikit 学习超参数估计

在本节中,我们将学习 python 中的 scikit 学习超参数估计

  • 众所周知,超参数是作为参数传递给估计器的构造函数的参数。
  • 超参数是不使用实际观测数据估计的模型参数。

代码:

在下面的代码中,我们将从 sklearn.datasets 中导入 make_classification,通过它在不使用实际观测数据的情况下估计模型参数。

这里sh = halvinggridsearchv(base _ estimator,parameter_grid,cv=5,factor=2,resource='n_estimators ',max_resources=30)。fit(x,y) 用于在不使用实际观测数据的情况下进行估计。

from sklearn.datasets import make_classification
from sklearn.ensemble import RandomForestClassifier
from sklearn.experimental import enable_halving_search_cv 
from sklearn.model_selection import HalvingGridSearchCV
import pandas as pd

parameter_grid = {'max_depth': [3, 5, 10],
                  'min_samples_split': [2, 5, 10]}
base_estimator = RandomForestClassifier(random_state=0)
x, y = make_classification(n_samples=1000, random_state=0)
sh = HalvingGridSearchCV(base_estimator, parameter_grid, cv=5,
                         factor=2, resource='n_estimators',
                         max_resources=30).fit(x, y)
sh.best_estimator_

输出:

在运行上面的代码之后,我们得到了下面的输出,其中我们可以看到模型的最佳估计被打印在屏幕上。

scikit learn hyperparameter estimation

scikit learn hyperparameter estimation

阅读: Scikit 学习隐马尔可夫模型

Scikit 学习超参数优化

在本节中,我们将学习 python 中的 scikit learn 超参数优化

超参数优化被定义为选择一组最优超参数的过程或问题。

语法:

在这种语法中,估计器被优化以找到所有参数的名称和当前值。

estimator.get_parameter()

代码:

在下面的代码中,我们将从数据中导入 read_csv 来读取数据集,并使用 hyperparameter 来查找性能良好的模型配置。

  • ' https://raw . githubusercontent . com/jbrownlee/Datasets/master/sonar . CSV '用于加载数据集。
  • data = dataframe.values 用于分割输入和输出元素。
from pandas import read_csv
dataseturl = 'https://raw.githubusercontent.com/jbrownlee/Datasets/master/sonar.csv'
dataframe = read_csv(url, header=None)
data = dataframe.values
x, y = data[:, :-1], data[:, -1]
print(x.shape, y.shape)

输出:

运行上面的代码后,我们得到下面的输出,其中我们可以看到 208 行数据和 60 个变量。

scikit learn hyperparameter optimization

scikit learn hyperparameter optimization

您可能还想阅读以下 Scikit 学习教程。

因此,在本教程中,我们讨论了 Scikit learn 超参数调整,我们还涵盖了与其实现相关的不同示例。这是我们已经讨论过的例子列表。

  • Scikit 学习超参数调谐
  • Scikit 学习随机森林超参数
  • Scikit 学习逻辑回归超参数调整
  • Scikit 学习神经网络超参数调整
  • Scikit 学习线性回归超参数
  • Scikit 学习 SVM 超参数
  • Scikit 学习超参数估计
  • Scikit 学习超参数优化

Bijay Kumar MVPBijay Kumar

Python 是美国最流行的语言之一。我从事 Python 工作已经有很长时间了,我在与 Tkinter、Pandas、NumPy、Turtle、Django、Matplotlib、Tensorflow、Scipy、Scikit-Learn 等各种库合作方面拥有专业知识。我有与美国、加拿大、英国、澳大利亚、新西兰等国家的各种客户合作的经验。查看我的个人资料。

enjoysharepoint.com/

Scikit 学习图像处理

原文:https://pythonguides.com/scikit-learn-image-processing/

Python & Machine Learning training courses

在本 Python 教程中,我们将学习 Scikit 学习映像,我们还将涵盖与 Scikit 学习映像相关的不同示例。我们将讨论这些话题。

  • Scikit 学习图像相似性
  • Scikit 学习图像聚类
  • Scikit 学习图像增强
  • Scikit 学习图像数据集
  • Scikit 学习图像预处理
  • Scikit 学习图像特征提取
  • sci kit-学习图像分类
  • Scikit 学习图像分割
  • Scikit 学习图像识别
  • Scikit 学习映像安装
  • Scikit 学习图像读取图像

目录

Scikit 学习图像相似度

在本节中,我们将了解scikit 如何使用 python 学习图像相似性

Scikit 学习图像相似度定义为估计两幅相同图像相似度的过程。

代码:

在下面的代码中,我们将从 skimage.metrics 导入 structural_similarity 作为 ssim,通过它我们可以估计图像的相似性。

  • image = img _ as _ float(data . camera())用于举例运行图像。
  • range = num . random . default _ RNG()用于生成随机默认范围。
  • image_noise = image + noise 用于给图像添加噪声。
  • fig,axes = plot.subplots(nrows=1,ncols=3,figsize=(10,4),sharex=True,sharey=True) 用于在屏幕上绘制图像。
  • MSE _ none = mean _ squared _ error(image,image) 用于表示图像中的相似性。
  • 轴[0]。imshow(image,cmap=plot.cm.gray,vmin=0,vmax=1) 用于在屏幕上显示轴。
  • 轴[0]。set _ xlabel(f ' MSE:{ MSE _ none:. 2f },SSIM: {ssim_none:.2f}') 用于给轴加 x 标签。
  • 轴[0]。set_title('原始图像')用来给图像加标题。
import numpy as num
import matplotlib.pyplot as plot

from skimage import data, img_as_float
from skimage.metrics import structural_similarity as ssim
from skimage.metrics import mean_squared_error

image = img_as_float(data.camera())
rows, cols = image.shape

noise = num.ones_like(image) * 0.3 * (image.max() - image.min())
range = num.random.default_rng()
noise[range.random(size=noise.shape) > 0.6] *= -1

image_noise = image + noise
image_const = image + abs(noise)

fig, axes = plot.subplots(nrows=1, ncols=3, figsize=(10, 4),
                         sharex=True, sharey=True)
axis = axes.ravel()

mse_none = mean_squared_error(image, image)
ssim_none = ssim(image, image, data_range=image.max() - image.min())

mse_noise = mean_squared_error(image, image_noise)
ssim_noise = ssim(image, image_noise,
                  data_range=image_noise.max() - image_noise.min())

mse_const = mean_squared_error(image, image_const)
ssim_const = ssim(image, image_const,
                  data_range=image_const.max() - image_const.min())

axis[0].imshow(image, cmap=plot.cm.gray, vmin=0, vmax=1)
axis[0].set_xlabel(f'MSE: {mse_none:.2f}, SSIM: {ssim_none:.2f}')
axis[0].set_title('Original image')

axis[1].imshow(image_noise, cmap=plot.cm.gray, vmin=0, vmax=1)
axis[1].set_xlabel(f'MSE: {mse_noise:.2f}, SSIM: {ssim_noise:.2f}')
axis[1].set_title('Image with noise')

axis[2].imshow(img_const, cmap=plot.cm.gray, vmin=0, vmax=1)
axis[2].set_xlabel(f'MSE: {mse_const:.2f}, SSIM: {ssim_const:.2f}')
axis[2].set_title('Image plus constant')

plot.tight_layout()
plot.show()

输出:

运行上述代码后,我们得到以下输出。在输出中,我们可以看到屏幕上显示了 scikit 学习图像相似性。

scikit learn image similarity

scikit learn image similarity

阅读: Scikit 学习隐马尔可夫模型

Scikit 学习图像聚类

在本节中,我们将了解 python 中的scikit learn image clustering works

  • 聚类被定义为将未标记的数据集分组或将数据分组到具有相似数据点的不同簇中。
  • 这里我们使用谱聚类,它用于切割图形并最小化梯度的比率。

代码:

在下面的代码中,我们将从 sklearn.cluster 导入 spectral_clustering,通过它我们可以切割图形并最小化梯度的比率。

  • x,y = NP . indexes((l,l)) 用于返回代表网格索引的数组。
  • imge = circle 1+circle 2+circle 3+circle 4用于创建四个圆。
  • mask = imge.astype(bool) 用于限制前景。
  • graph = image . img _ to _ graph(imge,mask=mask) 用于将图像转换为边缘带有渐变值的图形。
  • label _ im = num . full(mask . shape,-1.0) 用于给出图形的完整形状。
  • plot.matshow(imge)用于绘制图像。
  • labels = spectral _ clustering(graph,n_clusters=2,eigen_solver="arpack") 用于最小化梯度的比率。
import numpy as num
import matplotlib.pyplot as plot

from sklearn.feature_extraction import image
from sklearn.cluster import spectral_clustering

l = 100
x, y = np.indices((l, l))

center1 = (29, 25)
center2 = (41, 51)
center3 = (68, 59)
center4 = (25, 71)

radius1, radius2, radius3, radius4 = 17, 15, 16, 15

circle1 = (x - center1[0]) ** 2 + (y - center1[1]) ** 2 < radius1 ** 2
circle2 = (x - center2[0]) ** 2 + (y - center2[1]) ** 2 < radius2 ** 2
circle3 = (x - center3[0]) ** 2 + (y - center3[1]) ** 2 < radius3 ** 2
circle4 = (x - center4[0]) ** 2 + (y - center4[1]) ** 2 < radius4 ** 2

imge = circle1 + circle2 + circle3 + circle4

mask = imge.astype(bool)

imge = imge.astype(float)
imge += 1 + 0.2 * num.random.randn(*imge.shape)

graph = image.img_to_graph(imge, mask=mask)

graph.data = num.exp(-graph.data / graph.data.std())

labels = spectral_clustering(graph, n_clusters=4, eigen_solver="arpack")
label_im = num.full(mask.shape, -1.0)
label_im[mask] = labels

plot.matshow(imge)
plot.matshow(label_im)

imge = circle1 + circle2
mask = imge.astype(bool)
imge = imge.astype(float)

imge += 1 + 0.2 * num.random.randn(*imge.shape)

graph = image.img_to_graph(imge, mask=mask)
graph.data = num.exp(-graph.data / graph.data.std())

labels = spectral_clustering(graph, n_clusters=2, eigen_solver="arpack")
label_im = num.full(mask.shape, -1.0)
label_im[mask] = labels

plot.matshow(imge)
plot.matshow(label_im)

plot.show()

输出:

运行上述代码后,我们得到以下输出,从中我们可以看到屏幕上执行了 scikit learn 图像聚类。

scikit learn image clustering

scikit learn image clustering

另外,检查: Scikit 学习层次聚类

Scikit 学习图像增强

在本节中,我们将了解sci kit 如何在 python 中学习图像增强功能

图像增强被定义为一种用于增加我们图像大小的技术,也是通过图像的变换来完成的。

代码:

在下面的代码中,我们将导入一些库,从中我们可以对图像进行放大。

  • figure = plot . figure(tight _ layout = ' auto ',figsize=(10,7)) 用于在屏幕上绘制图形。
  • imge = im read(' buter fly . jpg ')/255用于加载图像。
  • plot.imshow(img) 用于绘制原始图像。
from skimage import transform
from skimage.transform import rotate, AffineTransform,warp
from skimage.util import random_noise
from skimage.filters import gaussian
from scipy import ndimage
import random
from skimage import img_as_ubyte
import os
**#basic Function to display image side by side**
def plotsides(imge1, imge2, title1, title2, cmap = None):
    figure = plot.figure(tight_layout='auto', figsize=(10, 7))
    figure.add_subplot(221)
    plot.title(title1)
    plot.imshow(imge)
    figure.add_subplot(222)
    plot.title(title2)
    plot.imshow(imge2, cmap = None)
    return fig

imge = imread('buterfly.jpg') / 255

plot.imshow(img)
plot.title('Original')
plot.show()

scikit learn augmentation original image

scikit learn augmentation original image

  • rotate30 = rotate(imge,angle=30) 用于将图像旋转 30°的角度。
  • rotate45 = rotate(imge,angle=45) 用于将图像旋转 45 度。
  • rotate60 = rotate(imge,angle=60) 用于将图像旋转 60 度。
  • rotate90 = rotate(imge,angle=90) 用于将图像旋转 90 度。
  • figure = plot . figure(tight _ layout = ' auto ',figsize=(10,10)) 用于绘制屏幕上的所有图形。
  • plot.title('旋转 30') 用于给屏幕加标题。
rotate30 = rotate(imge, angle=30)
rotate45 = rotate(imge, angle=45)
rotate60 = rotate(imge, angle=60)
rotate90 = rotate(imge, angle=90)
figure = plot.figure(tight_layout='auto', figsize=(10, 10))
figure.add_subplot(221)
plot.title('Rotate 30')
plot.imshow(rotate30)
figure.add_subplot(222)
plot.title('Rotate 45')
plot.imshow(rotate45)
figure.add_subplot(223)
plot.title('Rotate 60')
plot.imshow(rotate60)
figure.add_subplot(224)
plot.title('Rotate 90')
plot.imshow(rotate90)
plot.show()

scikit learn augmentation rotation images

scikit learn augmentation rotation images

  • 这里, sheared = transform.warp(img,tf,order=1,preserve_range=True,mode='wrap') 用于将图像原物变换为 sheared。
tf = AffineTransform(shear=-0.5)
sheared = transform.warp(img, tf, order=1, preserve_range=True, mode='wrap')
sheared_figure = plot_side(img, sheared, 'Original', 'Sheared')

scikit learn augmentation sheared image

scikit learn augmentation sheared image

  • 这里, warp_images = warp(imge,transform,mode="wrap") 就是对图像进行包裹。
  • 这里, warp_figure = plot_side(imge,warp_images,' Original ',' Wrap images') 用于在屏幕上绘制图形。
 transform = AffineTransform(translation=(-200,0)) 

warp_images = warp(imge,transform, mode="wrap") 

warp_figure = plot_side(imge,warp_images , 'Original', 'Wrap images')

scikit learn image augmentation transformation

scikit learn image augmentation transformation

现在, noise_figure = plot_side(imge,Noise _ images,' Original ',' Noise_image') 用于创建和绘制噪声图像。

 noisy_images = random_noise(imge, var=0.1**.01)
noise_figure = plot_side(imge,noisy_images , 'Original', 'Noise_image')

scikit learn augmentation noisy image

scikit learn augmentation noisy image

  • blured _ images = ndimage . uniform _ filter(imge,size=(11,11,1)) 用于制作模糊图像。
  • noise_figure = plot_side(imge,blured_images,'原始','模糊')用于在屏幕上绘制图像。
 from scipy import ndimage
blured_images = ndimage.uniform_filter(imge, size=(11, 11, 1))
noise_figure = plot_side(imge,blured_images , 'Original', 'Blurred')

scikit learn image augmentation blurring

scikit learn image augmentation blurring

  • high brightness = imge+(100/255)用于增加图像的亮度。
  • figure _ highBrightness = plot _ side(imge,high brightness,' Original ',' brighted ')用于在屏幕上绘制图像。
 highBrightness = imge + (100/255)
figure_highBrightness = plot_side(imge, highBrightness, 'Original', 'Brightened')
plot.show()

scikit learn image augmentation increasing brightness

scikit learn image augmentation increasing brightness

  • up_down = np.flipud(imge) 用于上下翻转图像。
  • figure _ Up Down = plot _ side(imge,up_down,' Original ',' Up-Down') 用于在屏幕上绘制图形。
# flip up-down using np.flipud
up_down = np.flipud(imge)
figure_updown = plot_side(imge, up_down, 'Original', 'Up-Down')
plot.show()

scikit learn image augmentation flipping up down

scikit learn image augmentation flipping up down

阅读: Scikit 学习分类教程

Scikit 学习图像数据集

在本节中,我们将了解Scikit 如何在 python 中学习图像数据集的工作方式

图像数据集被定义为将图像的数据存储在数据容器中,并通过多种算法返回结果。

代码:

在下面的代码中,我们将从 sklearn.datasets 导入 load_sample_images,通过它我们可以在数据的帮助下加载图像。

  • len(datasets.images) 用于获取图像的长度。
  • first_imge_data.shape 用于获取图像的形状。
from sklearn.datasets import load_sample_images
datasets = load_sample_images()     
len(datasets.images)
first_imge_data = dataset.images[0] 
first_imge_data.shape 

scikit learn image dataset

scikit learn image dataset

first_imge_data.dtype 用于获取数据的类型。

first_imge_data.dtype 

scikit learn image dataset type

scikit learn image dataset type

阅读: Scikit 学习超参数调整

Scikit 学习图像预处理

在本节中,我们将了解 scikit 如何在 python 中学习图像预处理

图像预处理定义为图像在用于模型训练之前进行合成的步骤。

代码:

在下面的代码中,我们将从 sklearn 导入 io 对图像进行预处理。

  • 首先,files = OS . path . join(' ladybug . jpg ')用于加载图片。
  • 第二, io.imshow(瓢虫)用于显示输入图像。
import os

import skimage
from skimage import io

files = os.path.join( 'ladybug.jpg')

ladybug = io.imread(files)

io.imshow(ladybug)
io.show()

输出:

运行上述代码后,我们得到以下输出。在输出中,我们可以看到 Scikit 学习图像预处理是在屏幕上完成的。

scikit learn image preprocessing

scikit learn image preprocessing

阅读: Scikit 学习 hidden _ layer _ size

Scikit 学习图像特征提取

在本节中,我们将学习scikit 如何学习 python 中的图像特征提取

  • 顾名思义,图像特征提取从图像中提取特征。特征提取与降维有关。
  • 特征提取也被定义为减少能够轻松描述大量数据的资源数量。

代码:

在下面的代码中,我们将使用来自 skimage.ioimread.imshow 来运行图像。

在代码中,image1 = im read(' grasshopper . jpg ')用于加载图像。

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
from skimage.io import imread, imshow
image1 = imread('grasshopper.jpg')
imshow(image1);

scikit learn feature extraction original image

scikit learn feature extraction original image

另外,image2 = imread(' grasshopper . jpg ',as_gray=True) 用于加载灰色阴影图像。

image2 = imread('grasshopper.jpg', as_gray=True)
imshow(image2);

scikit learn feature extraction grey scale image

scikit learn feature extraction greyscale image

  • print(image1.shape) 用于打印 image1 的形状。
  • 打印(image2.shape) 用于打印 image2 的形状。
print(image1.shape)
print(image2.shape)

scikit learn image feature extraction shape

scikit learn image feature extraction shape

  • print(image1.size) 用于打印 image1 的大小。
  • print(image2.size) 用于打印 image2 的大小。
print(image1.size)
print(image2.size)

scikit learn image feature extraction size

scikit learn image feature extraction size

这里, feature2 = np.reshape(image2,(280 * 390 )) 用于查找对 image2 的形状进行整形并返回数组的特征。

feature2 = np.reshape(image2, (280 * 390 ))
feature2

scikit learn image feature extraction gray scale

scikit learn image feature extraction grayscale

feature 1 = NP . shape(image1,(280 * 390 * 3)) 用于寻找对 image1 形状进行整形的特征并返回数组。

feature1 = np.reshape(image1, (280 * 390 * 3))
feature1

scikit learn image feature extraction original

scikit learn image feature extraction original

阅读: Scikit 学习线性回归+例题

Scikit 学习图像分类

在本节中,我们将了解scikit 如何在 python 中学习图像分类的工作方式

图像分类被定义为将图像分类到其不同类别的过程。

代码:

在下面的代码中,我们将导入一些可以对图像进行分类的库。

  • clfdata['description'] = '已调整大小({0}x{1})的 rgb 动物图像'。格式(int(width),int(height)) 用于给出数据的描述。
  • current _ path = OS . path . join(src,subdir) 用于从路径中读取图像,并根据目标路径调整图像大小。
  • clf data _ path = '/content/drive/my drive/Image '使用的是我的驱动器的路径。
import matplotlib.pyplot as plot
import numpy as num
import os
import pprint
pp = pprint.PrettyPrinter(indent=4)
import joblib
from skimage.io import imread
from skimage.transform import resize

def resize_all(src, pklname, include, width=150, height=None):

    height = height if height is not None else width

    clfdata = dict()
    clfdata['description'] = 'resized ({0}x{1})animal images in rgb'.format(int(width), int(height))
    clfdata['label'] = []
    clfdata['filename'] = []
    clfdata['data'] = []   

    pklname = f"{pklname}_{width}x{height}px.pkl"

    for subdir in os.listdir(src):
        if subdir in include:
            print(subdir)
            current_path = os.path.join(src, subdir)

            for file in os.listdir(current_path):
                if file[-3:] in {'jpg', 'png'}:
                    im = imread(os.path.join(current_path, file))
                    im = resize(im, (width, height)) 
                    clfdata['label'].append(subdir[:-4])
                    clfdata['filename'].append(file)
                    clfdata['data'].append(im)

        joblib.dump(clfdata, pklname)
clfdata_path = '/content/drive/MyDrive/Image'
os.listdir(clfdata_path)

输出:

运行上面的代码后,我们得到下面的输出,我们可以看到动物数据集被打印在屏幕上。

scikit learn image classification dataset

scikit learn image classification dataset

  • basename = 'animal_faces' 用作数据集的名称。
  • resize_all(src=clfdata_path,pklname=basename,width=width,include=include) 用于调整数据集的大小。
basename = 'animal_faces'
width = 80

include = {'ChickenHead', 'BearHead', 'ElephantHead', 
           'EagleHead', 'DeerHead', 'MonkeyHead', 'PandaHead'}

resize_all(src=clfdata_path, pklname=basename, width=width, include=include)

scikit learn image classification resizes dataset

scikit learn image classification resizes dataset

  • clf data = joblib . load(f“{ basename } _ { width } x { width } px . pkl ')用于加载数据集。
  • print('number of samples:',len(clf data[' data '])用于打印样本数。
  • print('keys:',list(clfdata.keys()))用于打印键的数量。
  • 打印('图像形状: ',clfdata['数据'][0]。【形状)】T1 用于打印图像的形状。
  • print('labels:',num . unique(clf data[' label '])用于打印标签。
  • 计数器(clfdata['label']) 用于打印计数器。
from collections import Counter

clfdata = joblib.load(f'{basename}_{width}x{width}px.pkl')

print('number of samples: ', len(clfdata['data']))
print('keys: ', list(clfdata.keys()))
print('description: ', clfdata['description'])
print('image shape: ', clfdata['data'][0].shape)
print('labels:', num.unique(clfdata['label']))

Counter(clfdata['label'])

scikit learn image classification counter data

scikit learn image classification counter data

  • labels = num . unique(clf data[' label '])用于获取标签列表中所有唯一的值。
  • figure,axes = plot.subplots(1,len(labels)) 用于根据标签数量设置 matplotlib 图形和轴。
  • idx = clfdata['label']。index(label) 用于获取与其搜索字符串相对应的第一个项目的索引。
 labels = num.unique(clfdata['label'])

figure, axes = plot.subplots(1, len(labels))
figure.set_size_inches(17,6)
figure.tight_layout()

for axis, label in zip(axes, labels):
    idx = clfdata['label'].index(label)

    axis.imshow(clfdata['data'][idx])
    axis.axis('off')
    axis.set_title(label)

scikit learn image classification

scikit learn image classification

  • x_train,x_test,y_train,y_test=train_test_split(x,y,test_size=0.4,shuffle=True,random_state=44,)用于将数据集拆分为训练数据和测试数据。
  • unique,counts = num.unique(y,return_counts=True) 用于计算每种类型的球场。
  • counts = 100 * counts[sorted _ index]/len(y)用于表示百分比。
  • counts = counts[sorted _ index]用于绘图作为计数。
  • plot.xticks(xtemp,unique,rotation=45) 用于绘制 x 刻度。
  • plot.suptitle('每种类型的相对照片数量')用于在屏幕上绘制字幕。
  • plot_bar(y_train,loc='left') 用于在屏幕上绘制 y_train 条。
  • plot_bar(y_test,loc='right') 用于在屏幕上绘制 y_test 条。
x = num.array(clfdata['data'])
y = num.array(clfdata['label'])
from sklearn.model_selection import train_test_split

x_train, x_test, y_train, y_test = train_test_split(
    x, 
    y, 
    test_size=0.4, 
    shuffle=True,
    random_state=44,
)
def plot_bar(y, loc='left', relative=True):
    width = 0.37
    if loc == 'left':
        n = -0.7
    elif loc == 'right':
        n = 0.7

    unique, counts = num.unique(y, return_counts=True)
    sorted_index = num.argsort(unique)
    unique = unique[sorted_index]

    if relative:

        counts = 100*counts[sorted_index]/len(y)
        ylabel_text = '% count'
    else:

        counts = counts[sorted_index]
        ylabel_text = 'count'

    xtemp = num.arange(len(unique))

    plot.bar(xtemp + n*width, counts, align='center', alpha=.7, width=width)
    plot.xticks(xtemp, unique, rotation=45)
    plot.xlabel('equipment type')
    plot.ylabel(ylabel_text)

plot.suptitle('relative amount of photos per type')
plot_bar(y_train, loc='left')
plot_bar(y_test, loc='right')
plot.legend([
    'train ({0} photos)'.format(len(y_train)), 
    'test ({0} photos)'.format(len(y_test))
]);

scikit learn image classification graph

scikit learn image classification graph

阅读: Scikit 学习功能选择

Scikit 学会图像分割

在本节中,我们将了解scikit 如何在 python 中学习图像分割的工作方式

Scikit learn 图像分割被定义为平衡圆体积的算法。如果所有的圆大小相同,分割效果很好,如果大小不同,分割会失败。

代码:

  • x,y = NP . indexes((l,l)) 用于返回代表网格索引的数组。
  • imge = circle 1+circle 2+circle 3+circle 4用于创建四个圆。
  • mask = imge.astype(bool) 用于限制前景。
  • graph = image . img _ to _ graph(imge,mask=mask) 用于将图像转换为边缘带有渐变值的图形。
  • label _ im = num . full(mask . shape,-1.0) 用于给出图形的完整形状。
  • plot.matshow(imge)用于绘制图像。
  • labels = spectral _ clustering(graph,n_clusters=2,eigen_solver="arpack") 用于最小化梯度的比率。
import numpy as num
import matplotlib.pyplot as plot

from sklearn.feature_extraction import image
from sklearn.cluster import spectral_clustering

l = 100
x, y = num.indices((l, l))

center1 = (27, 23)
center2 = (39, 49)
center3 = (66, 57)
center4 = (23, 69)

radius1, radius2, radius3, radius4 = 15, 13, 14, 13

circle1 = (x - center1[0]) ** 2 + (y - center1[1]) ** 2 < radius1 ** 2
circle2 = (x - center2[0]) ** 2 + (y - center2[1]) ** 2 < radius2 ** 2
circle3 = (x - center3[0]) ** 2 + (y - center3[1]) ** 2 < radius3 ** 2
circle4 = (x - center4[0]) ** 2 + (y - center4[1]) ** 2 < radius4 ** 2

imge = circle1 + circle2 + circle3 + circle4

mask = imge.astype(bool)

imge = imge.astype(float)
imge += 2 + 0.3 * num.random.randn(*imge.shape)

graph = image.img_to_graph(imge, mask=mask)

graph.data = num.exp(-graph.data / graph.data.std())

labels = spectral_clustering(graph, n_clusters=4, eigen_solver="arpack")
label_im = num.full(mask.shape, -4.0)
label_im[mask] = labels

plot.matshow(imge)
plot.matshow(label_im)

imge = circle1 + circle2+circle3
mask = imge.astype(bool)
imge = imge.astype(float)

imge += 2 + 0.3 * num.random.randn(*imge.shape)

graph = image.img_to_graph(imge, mask=mask)
graph.data = num.exp(-graph.data / graph.data.std())

labels = spectral_clustering(graph, n_clusters=2, eigen_solver="arpack")
label_im = num.full(mask.shape, -2.0)
label_im[mask] = labels

plot.matshow(imge)
plot.matshow(label_im)

plot.show()

输出:

运行上面的代码后,我们得到下面的输出,我们可以看到圆的大小和形状是相同的,分割不会失败。

scikit learn image segmentation

scikit learn image segmentation

阅读: Scikit 学习岭回归

Scikit 学习图像识别

在本节中,我们将了解 Scikit 如何在 python 中学习图像识别的工作原理。

Scikit 学习图像识别是一个识别图像的过程,也用于识别物体。

代码:

在下面的代码中,我们将导入一些我们可以从中识别图像的库。

  • dog = rescale(dog,1/3,mode='reflect') 用于将图像缩小到三分之一。
  • dog_hog,dog_hog_img = hog(dog,pixels_per_cell=(14,14),cells_per_block=(2,2),orientations=9,visualize=True,block_norm='L2-Hys') 用于计算 hog 并返回可视化表示。
  • a.tick_params(bottom=False,left=False,labelbottom=False,labelleft=False) 用于移除它们的刻度和标签。
  • 轴[0]。set_title('dog') 用来给图像加标题。
from skimage.feature import hog
from skimage.io import imread
from skimage.transform import rescale
import matplotlib.pyplot as plot

dog = imread('dog.jpg', as_gray=True)

dog = rescale(dog, 1/3, mode='reflect')

dog_hog, dog_hog_img = hog(
    dog, pixels_per_cell=(14,14), 
    cells_per_block=(2, 2), 
    orientations=9, 
    visualize=True, 
    block_norm='L2-Hys')

figure, axis = plot.subplots(1,2)
figure.set_size_inches(8,6)

[a.tick_params(bottom=False, left=False, labelbottom=False, labelleft=False) 
    for a in axis]

axis[0].imshow(dog, cmap='gray')
axis[0].set_title('dog')
axis[1].imshow(dog_hog_img, cmap='gray')
axis[1].set_title('hog')
plot.show()

输出:

运行上面的代码后,我们得到下面的输出,其中我们可以识别一只狗的图像。

scikit learn image recognition

scikit learn image recognition

从这段代码中,我们可以看到在我们的模型中处理的一些数据点减少了。经过一些想象,我们可以认出这条狗。

print('number of pixels: ', dog.shape[0] * dog.shape[1])
print('number of hog features: ', dog_hog.shape[0])

scikit learn image recognition percentage

scikit learn image recognition percentage

阅读: Scikit 学习决策树

Scikit 学习镜像安装

在这一节中,我们将了解到scikit 如何学习映像以在 python 中安装

如果我们想安装 scikit 学习镜像,那么首先检查 sci kit-镜像是否已经安装,或者它是否工作,并检查安装版本。

我们可以通过以下命令检查 scikit-image 版本或其工作情况:

import skimage
print(skimage.__version__)

scikit learn install image check version

scikit learn install image check version

如果我们想要更新版本或再次安装,请使用以下命令:

 pip  install -U scikit-image

我们已经安装了 scikit-image 的更新版本,如图所示。

scikit learn install image update version

scikit learn install image update version

Read: Scikit-learn Vs Tensorflow

Scikit 学习图像读取图像

在本节中,我们将了解scikit 如何在 python 中学习图像读取图像工作

Scikit 学习图像读取图像功能用于读取或处理图像。我们还可以在 scikit-image 模块的帮助下读取图像。

代码:

在下面的代码中,我们将导入一些库,从中我们可以读取图像并处理图像。

代码中,image _ gray = imread(' player . jpg ',as_gray=True) 用于读取灰度图像并加载到屏幕上。

from skimage.io import imread, imshow
import matplotlib.pyplot as plt
%matplotlib inline

image_gray = imread('player.jpg', as_gray=True)
imshow(image_gray)

scikit learn image read image

scikit learn image read image

  • print(image_gray.shape) 用于打印灰度图像的形状。
image_gray = imread('player.jpg', as_gray=True)
print(image_gray.shape)
print(image_gray)

scikit learn image read image gray shape

scikit learn image read image gray shape

  • image _ color = im read(' player . jpg ',as_gray=False) 用于加载和读取屏幕上的彩色图像。
  • print(image_color.shape) 用于在屏幕上打印彩色图像形状。
from skimage.io import imread, imshow
import matplotlib.pyplot as plt
%matplotlib inline

image_color = imread('player.jpg', as_gray=False)
print(image_color.shape)
imshow(image_color)

scikit learn image read image color shape

scikit learn image read image color shape

另外,看看更多的 Scikit 学习教程。

因此,在本教程中,我们讨论了 Scikit 学习映像,我们还涵盖了与其实现相关的不同示例。这是我们已经讨论过的例子列表。

  • Scikit 学习图像相似性
  • Scikit 学习图像聚类
  • Scikit 学习图像增强
  • Scikit 学习图像数据集
  • Scikit 学习图像预处理
  • Scikit 学习图像特征提取
  • sci kit-学习图像分类
  • Scikit 学习图像分割
  • Scikit 学习图像识别
  • Scikit 学习映像安装
  • Scikit 学习图像读取图像

Bijay Kumar MVPBijay Kumar

Python 是美国最流行的语言之一。我从事 Python 工作已经有很长时间了,我在与 Tkinter、Pandas、NumPy、Turtle、Django、Matplotlib、Tensorflow、Scipy、Scikit-Learn 等各种库合作方面拥有专业知识。我有与美国、加拿大、英国、澳大利亚、新西兰等国家的各种客户合作的经验。查看我的个人资料。

enjoysharepoint.com/

Scikit 学习 KNN 教程

原文:https://pythonguides.com/scikit-learn-knn-tutorial/

Python & Machine Learning training courses

在这个 Python 教程中,我们将学习 Scikit 学习 KNN 如何使用 Python 工作,我们还将涵盖与 Scikit 学习 KNN 相关的不同示例。我们将讨论这些话题。

  • Scikit 学习 KNN
  • Scikit 学习 KNN 分类
  • Scikit 了解 KNN 的优点和缺点
  • Scikit 学习 KNN 回归
  • Scikit 学习 KNN 回归示例
  • Scikit 学习 KNN 示例
  • Scikit 学习 KNN 插补
  • Scikit 学习 KNN 距离

目录

Scikit 学习 KNN

在这一节中,我们将了解如何 Scikit 学习 KNN 在 Python 中的工作

  • KNN 代表 K 近邻,它是机器学习的最简单和最容易的算法。
  • KNN 是监督学习技术,用于分类和回归,但主要用于分类。
  • KNN 算法在假设把新数据放在与新数据相似的类别中之后,假设可用数据和新数据之间的相似性。
  • KNN 是一个懒惰学习算法的例子,因为它不从训练集学习,而是存储数据集,并在分类时执行其操作。

代码:

在下面的代码中,我们将从 sklearn.neighbors 导入 KNeighborsclssifier,它假设在假设将新数据放入与新类别相似且最接近的=at 类别后,可用数据和新数据之间存在相似性。

  • neighborsclassifier(n _ neighbors = 3)显示有 3 个最近邻居。
  • neighbor . fit(x,y) 用于拟合最近的邻居。
x = [[1], [2], [3], [4]]
y = [0, 0, 1, 1]
from sklearn.neighbors import KNeighborsClassifier
neighbour = KNeighborsClassifier(n_neighbors=3)
neighbour.fit(x, y)

scikit learn KNN

scikit learn KNN

在下面的代码中,我们在一个表示数据集的数组的帮助下创建了最近邻类,并提出了一个问题,即哪个点离[2,2,2]最近。

samples = [[0., 0., 0.], [0., .6, 0.], [2., 1., .6]]
from sklearn.neighbors import NearestNeighbors
neighbour = NearestNeighbors(n_neighbors=1)
neighbour.fit(samples)
print(neighbour.kneighbors([[2., 2., 2.]]))

运行上面的代码后,我们得到下面的输出,我们可以看到它返回[1.72046]和[2],这意味着元素在距离 1.72046 处。

scikit learn KNN Nearest neighbour

scikit learn KNN Nearest neighbor

Read: Scikit-learn Vs Tensorflow

Scikit 学会 KNN 分类

在这一节中,我们将了解 Scikit 如何在 python 中学习 KNN 分类

  • Scikit 学习 KNN 是一种非参数分类方法。它用于分类和回归,但主要用于分类。
  • 在 KNN 分类中,输出取决于类成员,并且对象通过其邻居的各种投票被分类,并且对象被分配到最接近 k 个最近邻居的那个类。

代码:

在下面的代码中,我们将从 sklearn 导入 neighbors 数据集,通过它我们可以将对象分配到与 k 个最近邻居最接近的那个类。

  • X = iris.data[:,:2]用于取前两个特征。
  • h = 0.04 用于取步长大小。
  • colormap _ light = listed colormap([" yellow "," orange "," lightblue"])用于创建色彩映射表。
  • 分类器=邻居。KNeighborsClassifier(n _ neighbors,weights=weights)用于创建邻居的实例。
  • classifier.fit(X,y)用于拟合数据。
  • xx,YY = num . mesh grid(num . arange(x _ min,x_max,h),num.arange(y_min,y_max,h))用于绘制决策边界。
  • plot.contourf(xx,yy,Z,colormap=colormap_light)用于将结果放入颜色图中。
import numpy as num
import matplotlib.pyplot as plot
import seaborn as sb
from matplotlib.colors import ListedColormap
from sklearn import neighbors, datasets

n_neighbors = 17

iris = datasets.load_iris()

X = iris.data[:, :2]
y = iris.target

h = 0.04  

colormap_light = ListedColormap(["yellow", "orange", "lightblue"])
colormap_bold = ["pink", "c", "darkblue"]

for weights in ["uniform", "distance"]:

    classifier = neighbors.KNeighborsClassifier(n_neighbors, weights=weights)
    classifier.fit(X, y)

    x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1
    y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1
    xx, yy = num.meshgrid(num.arange(x_min, x_max, h), num.arange(y_min, y_max, h))
    Z = classifier.predict(num.c_[xx.ravel(), yy.ravel()])

    Z = Z.reshape(xx.shape)
    plot.figure(figsize=(8, 6))
    plot.contourf(xx, yy, Z, colormap=colormap_light)

   ** # Plot the training points**
    sb.scatterplot(
        x=X[:, 0],
        y=X[:, 1],
        hue=iris.target_names[y],
        palette=colormap_bold,
        alpha=1.0,
        edgecolor="brown",
    )
    plot.xlim(xx.min(), xx.max())
    plot.ylim(yy.min(), yy.max())
    plot.title(
        "3-Class classification (k = %i, weights = '%s')" % (n_neighbors, weights)
    )
    plot.xlabel(iris.feature_names[0])
    plot.ylabel(iris.feature_names[1])

plot.show()

输出:

运行上述代码后,我们得到以下输出,其中我们可以看到屏幕上完成了 scikit 学习 KNN 分类。

scikit learn KNN classification

scikit learn KNN classification

阅读: Scikit 学习分类教程

Scikit 了解 KNN 的优缺点

在这一节中,我们将了解到 scikit 在 python 中学习 KNN 的优缺点

优点:

  1. Scikit 学习 KNN 算法简单,易于实现。
  2. Scikit 学会 KNN 在做出任何预测之前没有训练的要求。
  3. 在 KNN sci kit learn 中,可以理想地添加新数据。
  4. Scikit learn 也称为懒惰学习者,因为它不需要任何实时预测培训。
  5. 懒惰的学习者使 KNN 比其他算法快得多。
  6. KNN 算法是非常强大的噪声训练数据。

缺点:

  1. 在 KNN 算法中,我们总是计算 K 的值,这有时可能很困难。
  2. 在 KNN,大型数据集的预测成本很高,因为计算新数据和令人兴奋的数据之间的距离的成本很高。
  3. KNN 对嘈杂的数据集非常敏感。
  4. 在 KNN,我们需要在将 KNN 算法应用于任何数据集之前进行要素缩放。
  5. KNN 不处理分类特征,因为很难找到分类变量的距离。

阅读: Scikit 学习超参数调整

Scikit 学习 KNN 回归

在本节中,我们将了解 scikit 如何在 Python 中学习 KNN 回归。

  • Scikit 学习 KNN 回归算法被定义为回归的值是 K 个最近邻的值的平均值。
  • 在 scikit learn KNN 中,程序的输出是对象的属性值。

代码:

在下面的代码中,我们将从 sklearn.neighbors 导入 KNeighborsRegressor,通过它回归的值是 K-nearest neighbors 值的平均值。

  • neighbors regressor(n _ neighbors = 4)用于寻找一个点的 K-邻居。
  • neighbor.fit(X,y) 用于拟合训练集的 k 近邻回归。
X = [[1], [2], [3], [4]]
y = [0, 0, 1, 1]
from sklearn.neighbors import KNeighborsRegressor
neighbor = KNeighborsRegressor(n_neighbors=4)
neighbor.fit(X, y)

运行上述代码后,我们得到以下输出,其中我们可以看到屏幕上打印了 scikit learn knn 回归点。

sscikit learn KNN regression

scikit learn KNN regression

阅读: Scikit 学习线性回归

Scikit 学习 KNN 回归的例子

在这一节中,我们将讨论一个用 python 编写的 scikit 学习 KNN 回归的例子

我们知道,scikit 学习的 KNN 回归 算法被定义为回归的值是 K 个最近邻居的值的平均值。

代码:

在下面的代码中,我们将从 sklearn 导入邻居,通过它我们可以获得回归的值。

  • y[::5]+= 1 *(0.5–NP . rand . rand(8))用于给目标添加噪声。
  • n_neighbors = 7 是拟合回归模型。
  • knn =邻居。KNeighborsRegressor(n _ neighbors,weights=weights) 用于寻找一个点的 k-邻居。
  • y_ = knn.fit(x,y)。predict(T) 用于拟合训练集的 K- neighbors 回归。
  • plot.plot(T,y_,color="blue ",label="prediction") 用于在屏幕上绘制图形。
  • plot . title(" KNeighborsRegressor(k = % I,weights = '%s')" % (n_neighbors,weights)) 用于给图赋予标题。
import numpy as num
import matplotlib.pyplot as plot
from sklearn import neighbors

num.random.seed(0)
x = num.sort(5 * np.random.rand(40, 1), axis=0)
t = num.linspace(0, 5, 500)[:, num.newaxis]
y = num.sin(x).ravel()

y[::5] += 1 * (0.5 - np.random.rand(8))

n_neighbors = 7

for i, weights in enumerate(["uniform", "distance"]):
    knn = neighbors.KNeighborsRegressor(n_neighbors, weights=weights)
    y_ = knn.fit(x, y).predict(T)

    plot.subplot(2, 1, i + 1)
    plot.scatter(x, y, color="pink", label="data")
    plot.plot(T, y_, color="blue", label="prediction")
    plot.axis("tight")
    plot.legend()
    plot.title("KNeighborsRegressor (k = %i, weights = '%s')" % (n_neighbors, weights))

plot.tight_layout()
plot.show()

输出:

运行上述代码后,我们得到以下输出,其中我们可以看到屏幕上绘制了 scikit 学习回归图。

scikit learn KNN regression example

scikit learn KNN regression example

阅读: Scikit 学习功能选择

Scikit 学习 KNN 的例子

在这一节中,我们将了解 scikit 如何在 python 中学习 KNN 示例。

  • KNN 代表 K-最近邻是一种非参数分类算法。它用于分类和回归,但主要用于分类。
  • KNN 算法在假设把新数据放在与新数据相似的类别中之后,假设可用数据和新数据之间的相似性。

代码:

在下面的输出中,我们将从 sklearn.neighbors 导入 KneihborsClassifier,通过它我们可以评估数据点成为一个组的成员的可能性。

  • iris = datasets . load _ iris()用于加载数据。
  • 分类器 1 =决策树分类器(max_depth=4) 用作训练分类器。
  • xx,YY = num . mesh grid(num . arange(x _ min,x_max,0.1),num.arange(y_min,y_max,0.1)) 用于绘制决策区域。
  • Z = classifier . predict(num . c _[xx . ravel(),yy.ravel()]) 用于预测分类器。
  • axarr[idx[0],idx[1]]。scatter(X[:,0],X[:,1],c=y,s=20,edgecolor="r") 用于绘制图形上的点。
 import numpy as num
import matplotlib.pyplot as plot

from sklearn import datasets
from sklearn.tree import DecisionTreeClassifier
from sklearn.neighbors import KNeighborsClassifier
from sklearn.svm import SVC
from sklearn.ensemble import VotingClassifier

iris = datasets.load_iris()
X = iris.data[:, [0, 2]]
y = iris.target

classifier1 = DecisionTreeClassifier(max_depth=4)
classifier2 = KNeighborsClassifier(n_neighbors=7)
classifier3 = SVC(gamma=0.1, kernel="rbf", probability=True)
eclassifier = VotingClassifier(
    estimators=[("dt", classifier1), ("knn", classifier2), ("svc", classifier3)],
    voting="soft",
    weights=[2, 1, 2],
)

classifier1.fit(X, y)
classifier2.fit(X, y)
classifier3.fit(X, y)
eclassifier.fit(X, y)

x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1
y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1
xx, yy = num.meshgrid(num.arange(x_min, x_max, 0.1), num.arange(y_min, y_max, 0.1))

f, axarr = plot.subplots(2, 2, sharex="col", sharey="row", figsize=(10, 8))

for idx, classifier, tt in zip(
    product([0, 1], [0, 1]),
    [classifier1, classifier2, classifier3, eclassifier],
    ["Decision Tree (depth=4)", "KNN (k=7)", "Kernel SVM", "Soft Voting"],
):

    Z = classifier.predict(num.c_[xx.ravel(), yy.ravel()])
    Z = Z.reshape(xx.shape)

    axarr[idx[0], idx[1]].contourf(xx, yy, Z, alpha=0.4)
    axarr[idx[0], idx[1]].scatter(X[:, 0], X[:, 1], c=y, s=20, edgecolor="r")
    axarr[idx[0], idx[1]].set_title(tt)

plot.show()

输出:

运行上述代码后,我们得到以下输出,其中我们可以看到屏幕上显示了 scikit learn KNN 示例。

scikit learn KNN example

scikit learn KNN example

阅读: Scikit 学习岭回归

Scikit 学会 KNN 插补

在本节中,我们将了解 scikit 如何在 python 中学习 KNN 插补。

  • KNN 是一种 K 近邻算法,用于识别与可用数据接近且相似的 K 个样本。
  • 我们使用 k 个样本来猜测缺失数据点的值。通过 k 近邻的平均值,我们可以估算样本缺失值。

代码:

在下面的代码中,我们将从 sklearn.datasets 导入 load_diabetes,通过它我们可以用 imputer 替换这个数据集的缺失值。

  • n _ missing _ samples = int(n _ samples * missing _ rate)用于添加 75%行中的缺失值。
  • 从 sklearn.impute 导入 SimpleImputer,KNNImputer,iterative imputr用于从 sklearn.impute 模块导入估算器。
  • full _ scores = cross _ val _ score(regressor,X_full,y_full,scoring = " neg _ mean _ squared _ error ",cv=N_SPLITS) 用于估计分数。
  • imputr = simple imputr(missing _ values = NP . nan,add_indicator=True,strategy="constant ",fill_value=0) 用于替换缺失值 bu 零。
  • imputr = KNNImputer(missing _ values = NP . nan,add _ indicator = True)KNN _ input _ scores = get _ scores _ for _ imputr(imputr,X_missing,y_missing) 用于根据所需的最近邻数来估算缺失值。
  • imputr = simple imputr(missing _ values = NP . nan,strategy="mean ",add_indicator=True) 用于用均值对缺失值进行估算。
  • plot.figure(figsize=(12,6)) 用于绘制图形。
  • axis1.set_title("用糖尿病数据进行 KNN 插补")用于给图表加标题。
import numpy as num

from sklearn.datasets import load_diabetes

range = num.random.RandomState(42)

X_diabetes, y_diabetes = load_diabetes(return_X_y=True)

def add_missing_values(X_full, y_full):
    n_samples, n_features = X_full.shape

    missing_rate = 0.75
    n_missing_samples = int(n_samples * missing_rate)

    missing_samples = np.zeros(n_samples, dtype=bool)
    missing_samples[:n_missing_samples] = True

    range.shuffle(missing_samples)
    missing_features = range.randint(0, n_features, n_missing_samples)
    X_missing = X_full.copy()
    X_missing[missing_samples, missing_features] = num.nan
    y_missing = y_full.copy()

    return X_missing, y_missing

X_miss_diabetes, y_miss_diabetes = add_missing_values(X_diabetes, y_diabetes)
range = num.random.RandomState(0)

from sklearn.ensemble import RandomForestRegressor

from sklearn.experimental import enable_iterative_imputer  
from sklearn.impute import SimpleImputer, KNNImputer, IterativeImputer
from sklearn.model_selection import cross_val_score
from sklearn.pipeline import make_pipeline

N_SPLITS = 5
regressor = RandomForestRegressor(random_state=0)
def get_scores_for_imputer(imputer, X_missing, y_missing):
    estimator = make_pipeline(imputer, regressor)
    impute_scores = cross_val_score(
        estimator, X_missing, y_missing, scoring="neg_mean_squared_error", cv=N_SPLITS
    )
    return impute_scores

x_labels = []

mses_diabetes = num.zeros(5)
stds_diabetes = num.zeros(5)

def get_full_score(X_full, y_full):
    full_scores = cross_val_score(
        regressor, X_full, y_full, scoring="neg_mean_squared_error", cv=N_SPLITS
    )
    return full_scores.mean(), full_scores.std()

mses_diabetes[0], stds_diabetes[0] = get_full_score(X_diabetes, y_diabetes)
x_labels.append("Full data")

def get_impute_zero_score(X_missing, y_missing):

    imputer = SimpleImputer(
        missing_values=np.nan, add_indicator=True, strategy="constant", fill_value=0
    )
    zero_impute_scores = get_scores_for_imputer(imputer, X_missing, y_missing)
    return zero_impute_scores.mean(), zero_impute_scores.std()

mses_diabetes[1], stds_diabetes[1] = get_impute_zero_score(
    X_miss_diabetes, y_miss_diabetes
)
x_labels.append("Zero imputation")

def get_impute_knn_score(X_missing, y_missing):
    imputer = KNNImputer(missing_values=np.nan, add_indicator=True)
    knn_impute_scores = get_scores_for_imputer(imputer, X_missing, y_missing)
    return knn_impute_scores.mean(), knn_impute_scores.std()

mses_diabetes[2], stds_diabetes[2] = get_impute_knn_score(
    X_miss_diabetes, y_miss_diabetes
)
x_labels.append("KNN Imputation")

def get_impute_mean(X_missing, y_missing):
    imputer = SimpleImputer(missing_values=np.nan, strategy="mean", add_indicator=True)
    mean_impute_scores = get_scores_for_imputer(imputer, X_missing, y_missing)
    return mean_impute_scores.mean(), mean_impute_scores.std()

mses_diabetes[3], stds_diabetes[3] = get_impute_mean(X_miss_diabetes, y_miss_diabetes)
x_labels.append("Mean Imputation")
def get_impute_iterative(X_missing, y_missing):
    imputer = IterativeImputer(
        missing_values=np.nan,
        add_indicator=True,
        random_state=0,
        n_nearest_features=5,
        sample_posterior=True,
    )
    iterative_impute_scores = get_scores_for_imputer(imputer, X_missing, y_missing)
    return iterative_impute_scores.mean(), iterative_impute_scores.std()

mses_diabetes[4], stds_diabetes[4] = get_impute_iterative(
    X_miss_diabetes, y_miss_diabetes
)
x_labels.append("Iterative Imputation")

mses_diabetes = mses_diabetes * -1
import matplotlib.pyplot as plot

n_bars = len(mses_diabetes)
xval = num.arange(n_bars)

colors = ["b", "pink", "r", "orange", "green"]

plot.figure(figsize=(12, 6))
axis1 = plot.subplot(121)
for j in xval:
    axis1.barh(
        j,
        mses_diabetes[j],
        xerr=stds_diabetes[j],
        color=colors[j],
        alpha=0.6,
        align="center",
    )

axis1.set_title("KNN Imputation with Diabetes Data")
axis1.set_xlim(left=num.min(mses_diabetes) * 0.9, right=num.max(mses_diabetes) * 1.1)
axis1.set_yticks(xval)
axis1.set_xlabel("MSE")
axis1.invert_yaxis()
axis1.set_yticklabels(x_labels)

plot.show()

输出:

运行上述代码后,我们得到以下输出,可以看到屏幕上绘制了糖尿病数据的 KNN 插补。

scikit learn KNN imputation

scikit learn KNN imputation

阅读: Scikit 学习隐马尔可夫模型

Scikit 学习 KNN 距离

在本节中,我们将了解 scikit 如何在 python 中学习 KNN 距离。

  • Scikit 学习 KNN 距离定义为测量数据集最近邻的距离。
  • KNN 算法在假设将新数据放入与新类别相似的类别后,假设可用数据与新数据之间的相似性。

代码:

在下面的代码中,我们将从 sklearn.neighbors 导入 NearestNeighbors,通过它我们可以测量离数据集最近的邻居的距离。

  • 输入数据=数量。数组([[-2,2],[-3,3],[-4,4],[1,2],[2,3],[3,4],[4,5]] ) 用于定义数据集。
  • nearest _ neighbor . fit(Input _ data)用于用输入数据集拟合模型。
  • distances,indexes = nearest _ neighbors . kneighbors(Input _ data)用于查找数据集的 K 个最近邻。
from sklearn.neighbors import NearestNeighbors
import numpy as num
Input_data = num.array([[-2, 2], [-3, 3], [-4, 4], [1, 2], [2, 3], [3, 4],[4, 5]])
nearest_neighbor = NearestNeighbors(n_neighbors = 4, algorithm='ball_tree')
nearest_neighbor.fit(Input_data)
distances, indices = nearest_neighbor.kneighbors(Input_data)
indices
distances
nearest_neighbor.kneighbors_graph(Input_data).toarray()

输出:

运行上述代码后,我们得到以下输出,其中我们可以看到 scikit 学习 KNN 距离以数组的形式打印在屏幕上。

scikit learn KNN distance

scikit learn KNN distance

您可能还想阅读 Scikit Learn 上的以下教程。

因此,在本教程中,我们讨论了 Scikit learn KNN 的工作方式,并且我们还涵盖了与其实现相关的不同示例。这是我们已经讨论过的例子列表。

  • Scikit 学习 KNN
  • Scikit 学习 KNN 分类
  • Scikit 了解 KNN 的优点和缺点
  • Scikit 学习 KNN 回归
  • Scikit 学习 KNN 回归示例
  • Scikit 学习 KNN 示例
  • Scikit 学习 KNN 插补
  • Scikit 学习 KNN 距离

Bijay Kumar MVPBijay Kumar

Python 是美国最流行的语言之一。我从事 Python 工作已经有很长时间了,我在与 Tkinter、Pandas、NumPy、Turtle、Django、Matplotlib、Tensorflow、Scipy、Scikit-Learn 等各种库合作方面拥有专业知识。我有与美国、加拿大、英国、澳大利亚、新西兰等国家的各种客户合作的经验。查看我的个人资料。

enjoysharepoint.com/

Scikit 学习线性回归+示例

原文:https://pythonguides.com/scikit-learn-linear-regression/

Python & Machine Learning training courses

在这个 Python 教程中,我们将学习Scikit 如何在 Python 中学习线性回归工作,我们还将涵盖与线性回归相关的不同例子。我们将讨论这些话题。

  • Scikit 学习线性回归
  • Scikit 学习线性回归示例
  • Scikit 了解线性回归的优缺点
  • Scikit 学习线性回归梯度下降
  • Scikit 学习线性回归 p 值
  • Scikit 学习线性回归多重特性
  • Scikit 学习线性回归分类变量

目录

Scikit 学习线性回归

在这一节中,我们将了解如何 Scikit 学习线性回归在 Python 中的工作方式

  • 线性回归是预测建模技术的一种形式,它调查因变量和自变量之间的关系。
  • 线性回归是建模因变量和自变量之间关系的线性方法。

代码:

在下面的代码中,我们将从 sklearn.linear_model 导入线性回归,通过它我们可以调查因变量和自变量之间的关系。

回归=线性回归()。fit(x,y)用于拟合线性模型。

import numpy as np
from sklearn.linear_model import LinearRegression
x = np.array([[1, 1], [1, 2], [2, 2], [2, 3]])
# y = 1 * x_0 + 2 * x_1 + 3
y = np.dot(x, np.array([1, 2])) + 3
regression = LinearRegression().fit(x, y)
regression.score(x, y)

输出:

运行上面的代码后,我们得到下面的输出,我们可以看到线性回归的分数打印在屏幕上。

scikit learn linear regression

scikit learn linear regression

另外,检查: Scikit-learn 逻辑回归

Scikit 学习线性回归示例

在本节中,我们将了解如何 scikit 学习 Python 中的线性回归示例工作

正如我们所知,线性回归评估一个或多个预测变量之间的关系。

代码:

在下面的代码中,我们将从 sklearn 导入数据集 linear_model,通过它我们可以评估预测变量之间的关系。

  • diabetes_x,diabetes _ y = datasets . load _ diabetes(return _ X _ y = True)用于导入糖尿病数据集。
  • diabetes_x = diabetes_x[:,np.newaxis,2] 仅使用一个特征。
  • diabetes _ x _ train = diabetes _ x[:-20]用于将数据拆分成训练集或测试集。
  • 回归=线性 _ 模型。linear regression()用于创建一个线性回归对象。
  • regression . fit(diabetes _ x _ train,diabetes_y_train) 用于使用训练集对模型进行训练。
  • 打印(" Coefficients: \n ",regression.coef_) 用于打印系数。
  • print(" meansquadererror:% . 2f " % mean _ squared _ error(diabetes _ y _ test,diabetes_y_pred)) 用于计算均方误差。
  • plot . scatter(diabetes _ x _ test,diabetes_y_test,color="blue") 用于绘制散点图。
import matplotlib.pyplot as plot
import numpy as np
from sklearn import datasets, linear_model
from sklearn.metrics import mean_squared_error, r2_score

diabetes_x, diabetes_y = datasets.load_diabetes(return_X_y=True)

diabetes_x = diabetes_x[:, np.newaxis, 2]

diabetes_x_train = diabetes_x[:-20]
diabetes_x_test = diabetes_x[-20:]

diabetes_y_train = diabetes_y[:-20]
diabetes_y_test = diabetes_y[-20:]

regression = linear_model.LinearRegression()

regression.fit(diabetes_x_train, diabetes_y_train)

diabetes_y_pred = regression.predict(diabetes_x_test)

print("Coefficients: \n", regression.coef_)

print("Mean squared error: %.2f" % mean_squared_error(diabetes_y_test, diabetes_y_pred))

print("Coefficient of determination: %.2f" % r2_score(diabetes_y_test, diabetes_y_pred))

plot.scatter(diabetes_x_test, diabetes_y_test, color="blue")
plot.plot(diabetes_x_test, diabetes_y_pred, color="red", linewidth=3)

plot.xticks(())
plot.yticks(())

plot.show()

输出:

运行上述代码后,我们得到以下输出,从中我们可以看到均方误差和决定系数打印在屏幕上。

scikit learn linear regression example

scikit learn linear regression example

阅读: Scikit 学习决策树

Scikit 学习线性回归的优缺点

在这一节中,我们将了解到 Scikit 学习线性回归的优点和T2 在 Python 中的缺点。

优点:

  1. 线性回归简单且易于实施,并且解释了输出的系数。

2.线性回归避免了降维技术,但允许过度拟合。

3.当我们研究因变量和自变量之间的关系时,线性回归是最合适的。

4.与其他算法相比,线性回归的复杂性较低。

缺点:

  1. 在线性回归中,存在对边界和回归有很大影响的异常值。

2.线性回归关注因变量和自变量的平均值。如果平均值给出了单个变量的完整描述,那么线性变量不能给出变量之间关系的描述。

3.线性回归研究因变量和自变量之间的关系,因此这意味着它们之间存在直线关系。

阅读:Scikit-learn Vs tensor flow–详细对比

Scikit 学习线性回归梯度下降

在本节中,我们将了解到scikit 如何在 Python 中学习线性回归梯度下降 工作

  • 在前进之前,我们应该有一些关于梯度下降的知识。梯度作为斜率函数工作,并且梯度简单地计算权重的变化。
  • 梯度越高,斜率越低,模型越快。

代码:

在下面的代码中,我们将从 sklearn.linear_model 导入 SGDClassifier,通过它我们可以作为斜率函数工作。

from sklearn.linear_model import SGDClassifier
x = [[0., 0.], [1., 1.]]
y = [0, 1]
clf = SGDClassifier(loss="hinge", penalty="l2", max_iter=5)
clf.fit(x, y)

输出:

运行上面的代码后,我们得到下面的输出,我们可以看到随机梯度下降值打印在屏幕上。

scikit learn linear regression gradient descent

scikit learn linear regression gradient descent

阅读: Scikit 学习准确度 _ 分数

Scikit 学习线性回归 p 值

在本节中,我们将了解sci kit 如何在 python 中学习线性回归 p 值的工作方式

p 值被定义为当零假设为零时的概率,或者我们可以说,告诉零假设的统计显著性被拒绝或不被拒绝。一般来说,p 值小于 0.05

代码:

在下面的代码中,我们将从 sklearn.linear_model 导入 LinearRegression,通过它我们计算 p 值。

  • sm.add_constant(x) 用于添加常量。
  • p.fit() 用于拟合数值。
import pandas as pd
import numpy as np
from sklearn import datasets, linear_model
from sklearn.linear_model import LinearRegression
import statsmodels.api as sm
from scipy import stats

diabetesdataset = datasets.load_diabetes()
x = diabetesdataset.data
y = diabetesdataset.target

x2 = sm.add_constant(x)
p = sm.OLS(y, x2)
p2 = p.fit()
print(p2.summary())

输出:

运行上面的代码后,我们得到下面的输出,其中我们可以看到 p 值被打印在屏幕上。

scikit learn linear regression P value

scikit learn linear regression p-value

阅读: Scikit 学习层次聚类

Scikit 学习线性回归多重特性

在本节中,我们将了解Python 中的线性回归多重特性如何工作

  • 众所周知,线性回归是预测建模技术的一种形式,它调查因变量和自变量之间的关系。
  • 线性回归有多个特征,其中一个特征是普通最小二乘法。
  • 这种线性回归用它们的系数来拟合线性模型,以最小化数据集中被观察目标之间的剩余观察总和。

代码:

在下面的代码中,我们将从 sklearn 导入 linear_model,通过它我们计算回归系数。

  • regression.fit([[0,0],[1,1],[2,2],[0,1,2]) 用于拟合模型。
  • regression.coef_ 用于计算模型的系数。
from sklearn import linear_model
regression = linear_model.LinearRegression()
regression.fit([[0, 0], [1, 1], [2, 2]], [0, 1, 2])
regression.coef_

输出:

运行上面的代码后,我们得到了下面的输出,其中我们可以看到回归系数被打印在屏幕上。

scikit learn linear regression multiple features

scikit learn linear regression multiple features

另外,请阅读: Scikit 学习功能选择

Scikit 学习线性回归分类变量

在本节中,我们将学习 scikit 如何在 Python 中学习线性回归分类变量工作

在继续之前,我们将有一些关于分类变量的知识。

分类变量被定义为只接受非数字值的变量,如年龄、性别等。

代码:

在下面的代码中,我们将从 sklearn 导入线性回归,通过它我们可以创建一个分类虚拟变量。

数据= pd。DataFrame({'color': ['orange ',' blue ',' pink ',' yellow']}) 用于创建数据集。

from sklearn import linear_model
import pandas as pd
data = pd.DataFrame({'color': ['orange', 'blue', 'pink', 'yellow']})
print(pd.get_dummies(data))

输出:

运行上面的代码后,我们得到下面的输出,我们可以看到分类数据被打印在屏幕上。

scikit learn linear regression categorical variable

scikit learn linear regression categorical variable

另外,看看 Scikit learn 上的更多教程。

因此,在本教程中,我们讨论了Scikit learn linear regression,并涵盖了与其实现相关的不同示例。这是我们已经讨论过的例子列表。

  • Scikit 学习线性回归
  • Scikit 学习线性回归示例
  • Scikit 了解线性回归的优缺点
  • Scikit 学习线性回归梯度下降
  • Scikit 学习线性回归 p 值
  • Scikit 学习线性回归多重特性
  • Scikit 学习线性回归分类变量

Bijay Kumar MVPBijay Kumar

Python 是美国最流行的语言之一。我从事 Python 工作已经有很长时间了,我在与 Tkinter、Pandas、NumPy、Turtle、Django、Matplotlib、Tensorflow、Scipy、Scikit-Learn 等各种库合作方面拥有专业知识。我有与美国、加拿大、英国、澳大利亚、新西兰等国家的各种客户合作的经验。查看我的个人资料。

enjoysharepoint.com/

sci kit-学习逻辑回归

原文:https://pythonguides.com/scikit-learn-logistic-regression/

Python & Machine Learning training courses

在这个 Python 教程中,我们将学习sci kit-learn logistic regression,我们还将涵盖与sci kit-learn logistic regression相关的不同示例。我们将讨论这些话题。

  • sci kit-学习逻辑回归
  • sci kit-学习逻辑回归标准误差
  • sci kit-学习逻辑回归系数
  • sci kit-学习逻辑回归 p 值
  • sci kit-了解逻辑回归特性的重要性
  • sci kit-学习逻辑回归分类变量
  • Scikit-learn 逻辑回归交叉验证
  • sci kit-学习逻辑回归阈值

目录

Scikit-learn 逻辑回归

在本节中,我们将在 scikit-learn 中了解如何使用逻辑回归

  • 逻辑回归是一种防止二元分类的统计方法,或者我们可以说,当因变量为二元时进行逻辑回归。
  • 二分意味着有两个可能的类,如二进制类(0&1)。
  • 逻辑回归用于分类和回归。它计算事件发生的概率。

代码:

在这段代码中,我们将借助 sklearn 库导入 load_digits 数据集。数据内置在 sklearn 中,我们不需要上传数据。

from sklearn.datasets import load_digits
digits = load_digits()

我们已经可以在 sklearn 的帮助下导入数据。从下面的命令上传的数据中,我们可以看到数据集中有 1797 个图像和 1797 个标签。

 print('Image Data Shape' , digits.data.shape)

print("Label Data Shape", digits.target.shape

在下面的输出中,我们可以看到图像数据形状值和标签数据形状值正在屏幕上打印。

Importing dataset value

Importing dataset value

在这一部分,我们将看到我们的图像和标签看起来如何像图像,并帮助唤起您的数据。

  • plot.figure(figsize=(30,4)) 用于在屏幕上绘制图形。
  • for index,(image,label)in enumerate(zip(digits . data[5:10],digits . target[5:10]):用于给图片赋予完美的大小或标签。
  • plot.subplot(1,5,index + 1)用于绘制索引。
  • plot . im show(NP . shape(image,(8,8)),cmap=plt.cm.gray) 用于对图像进行整形。
  • plot.title('Set: %i\n' % label,fontsize = 30) 用于给图像加标题。
import numpy as np 
import matplotlib.pyplot as plot
plot.figure(figsize=(30,4))
for index, (image, label) in enumerate(zip(digits.data[5:10], digits.target[5:10])):
 plot.subplot(1, 5, index + 1)
 plot.imshow(np.reshape(image, (8,8)), cmap=plt.cm.gray)
 plot.title('Set: %i\n' % label, fontsize = 30)

运行上面的代码后,我们得到下面的输出,我们可以看到图像以 Set5,Set6,Set7,Set8,Set9 的形式绘制在屏幕上。

Enumerate digits target set

Enumerate digits target set

在下面的代码中,我们将数据分为两种形式:训练数据和测试数据。

from sklearn.model_selection import train_test_split
x_train, x_test, y_train, y_test = train_test_split(digits.data, digits.target, test_size=0.25, random_state=0)

这里我们从 sklearn 导入逻辑回归。sklearn 用于专注于数据集建模。

from sklearn.linear_model import LogisticRegression

在下面的代码中,我们创建了模型的一个实例。在这里,所有未指定的参数都设置为默认值。

logisticRegression= LogisticRegression()

上面我们把数据分成两组训练和测试数据。我们可以在训练完我们想要测试的数据后训练模型

logisticRegression.fit(x_train, y_train)

该模型可以在模型训练过程中学习,并从一个观察预测数据,并以数组的形式返回数据。

logisticRegression.predict(x_test[0].reshape(1,-1)

在下面的输出中,我们看到 NumPy 数组在预测一次观察后返回。

Return the array

Return the array

从下面的代码中,我们可以一次预测多个观察值。

logisticRegression.predict(x_test[0:10])

从这段代码中,我们可以预测整个数据。

logisticRegression.predict(x_test[0:10])

经过训练和测试,我们的模型是准备好了还是没有发现,我们可以衡量模型的准确性,我们可以使用评分方法来获得模型的准确性。

predictions = logisticRegression.predict(x_test)
score = logisticRegression.score(x_test, y_test)
print(score)

在这个输出中,我们可以通过使用评分方法来获得模型的准确性。

Predict the accuracy of a model

Predict the accuracy of a model

另外,检查: Scikit 学习决策树

sci kit-学习逻辑回归标准误差

正如我们所知,逻辑回归是一种防止二元分类的统计方法,并且我们知道当因变量为二元时进行逻辑回归。

这里我们可以研究逻辑标准误差。标准误差被定义为模型的系数是协方差矩阵的对角元素的平方根。

代码:

在下面的代码中,我们将处理逻辑回归的标准误差,因为我们知道标准误差是协方差矩阵对角元素的平方根。

from sklearn.metrics import mean_squared_error
y_true = [4, -0.6, 3, 8]
y_pred = [3.5, 0.1, 3, 9]
mean_squared_error(y_true, y_pred)
0.475
y_true = [4, -0.6, 3, 8]
y_pred = [3.5, 0.1, 3, 9]
mean_squared_error(y_true, y_pred, squared=False)
0.712
y_true = [[0.6, 2],[-2, 2],[8, -7]]
y_pred = [[1, 3],[-1, 3],[7, -6]]
mean_squared_error(y_true, y_pred)
0.808
mean_squared_error(y_true, y_pred, squared=False)
0.922
mean_squared_error(y_true, y_pred, multioutput='raw_values')
array=([0.51666667, 2])
mean_squared_error(y_true, y_pred, multioutput=[0.3, 0.7])
0.925

输出:

运行上面的代码后,我们得到下面的输出,其中我们可以看到错误值已经生成并显示在屏幕上。

Scikit learn logistic regression sandard error

Scikit-learn logistic regression standard error

阅读: Scikit 学习随机森林

sci kit-学习逻辑回归系数

在本节中,我们将了解如何在 scikit-learn 中使用逻辑回归系数。

系数被定义为给定项的值彼此相乘的数。这里,逻辑回归表示变量的大小和方向。

代码:

在下面的代码中,我们将库作为 pd 导入熊猫,作为 np 导入 numpy,作为 sl 导入 sklearn。

  • panda 库用于数据操作, numpy 用于处理数组。
  • sklearn 库用于专注于建模数据,而不是专注于操纵数据。
  • x = np.random.randint(0,7,size=n) 用于生成随机函数。
  • res_sd = sd。Logit(y,x)。fit(method="ncg ",maxiter=max_iter) 用于执行不同的静态任务。
  • print(res_sl.coef_) 用于在屏幕上打印系数。
 import pandas as pd
import numpy as np
import sklearn as sl
from sklearn.linear_model import LogisticRegression
import statsmodels.api as sd

n = 250

x = np.random.randint(0, 7, size=n)
y = (x > (0.10 + np.random.normal(0, 0.10, n))).astype(int)

display(pd.crosstab( y, x ))

max_iter = 150

res_sd = sd.Logit(y, x).fit(method="ncg", maxiter=max_iter)
print(res_sd.params)

res_sl = LogisticRegression( solver='newton-cg', multi_class='multinomial', max_iter=max_iter, fit_intercept=True, C=1e8 )
res_sl.fit( x.reshape(n, 1), y )
print(res_sl.coef_) 

输出:

运行上述代码后,我们得到以下输出,其中我们可以看到屏幕上打印了 scikit learn 逻辑回归系数。

scikit learn logistic regression coefficient

scikit learn logistic regression coefficient

阅读: Scikit 学习功能选择

sci kit-学习逻辑回归 p 值

在本节中,我们将了解如何在 scikit learn 中计算逻辑回归的 p 值。

逻辑回归 pvalue 用于检验零假设,其系数等于零。最低的 p 值是 < 0.05 ,这个最低的值表示你可以拒绝零假设。

代码:

在下面的代码中,我们将把库 import numpy 作为处理数组的 np 来导入。

  • 在此,我们首先计算 scikit 学习逻辑回归的 z 分数。
  • def logit_p1value(model,x): 在这里,我们使用一些类似 model 和 x 的参数。
  • 模型:用于拟合的 sklearn.linear_model。具有截距和大 C 值的逻辑回归
  • x: 用作模型拟合的矩阵。
  • model = logistic regression(C = 1e 30)。fit(x,y) 用于测试 pvalue。
  • print(logit_pvalue(model,x)) 进一步测试该值后,通过该方法将该值打印在屏幕上。
  • sd_model = sd。Logit(y,sm.add_constant(x))。fit(disp=0) 用于比较 pvalue 和 statmodels。
import numpy as np
from scipy.stats import norm
from sklearn.linear_model import LogisticRegression

def logit_p1value(model, x):

    p1 = model.predict_proba(x)
    n1 = len(p1)
    m1 = len(model.coef_[0]) + 1
    coefs = np.concatenate([model.intercept_, model.coef_[0]])
    x_full = np.matrix(np.insert(np.array(x), 0, 1, axis = 1))
    answ = np.zeros((m1, m1))
    for i in range(n1):
        answ = answ + np.dot(np.transpose(x_full[i, :]), x_full[i, :]) * p1[i,1] * p1[i, 0]
    vcov = np.linalg.inv(np.matrix(answ))
    se = np.sqrt(np.diag(vcov))
    t1 =  coefs/se  
    p1 = (1 - norm.cdf(abs(t1))) * 2
    return p1

x = np.arange(10)[:, np.newaxis]
y = np.array([0,0,0,1,0,0,1,1,1,1])
model = LogisticRegression(C=1e30).fit(x, y)
print(logit_pvalue(model, x))

import statsmodels.api as sd
sd_model = sd.Logit(y, sm.add_constant(x)).fit(disp=0)
print(sd_model.pvalues)
sd_model.summary()

输出:

运行上述代码后,我们得到以下输出,从中我们可以看到屏幕上创建了逻辑回归 p 值。

scikit learn logistic regression p value

scikit learn logistic regression p value

sci kit-学习逻辑回归特征重要性

在本节中,我们将了解到在 scikit learn 中逻辑回归的重要性。

特征重要性被定义为一种为输入特征分配值的方法,这些值是根据它们对预测目标变量的帮助程度来分配的。

代码:

在下面的代码中,我们将从 sklearn.linear_model 导入 LogisticRegression,还将导入 pyplot 以在屏幕上绘制图形。

  • x,y = make _ classification(n _ samples = 100,n_features=10,n _ informative = 5,n_redundant=5,random_state=1) 用于定义 dtatset。
  • model = LogisticRegression()用于定义模型。
  • model.fit(x,y) 用于拟合模型。
  • impact = model . coef _[0]用于获取特征的重要性。
  • py plot . bar([X for X in range(len(impact))],impact)用于绘制特征重要性。
 from sklearn.datasets import make_classification
from sklearn.linear_model import LogisticRegression
from matplotlib import pyplot

x, y = make_classification(n_samples=100, n_features=10, n_informative=5, n_redundant=5, random_state=1)

model = LogisticRegression()

model.fit(x, y)

imptance = model.coef_[0]

for i,j in enumerate(importance):
	print('Feature: %0d, Score: %.5f' % (i,j))

pyplot.bar([X for X in range(len(imptance))], imptance)
pyplot.show()

输出:

运行上述代码后,我们得到以下输出,从中我们可以看到屏幕上显示了逻辑回归特征的重要性。

scikit learn logistic regression feature importance

scikit learn logistic regression feature importance

另外,请阅读: Scikit-learn 与 tensor flow–详细对比

sci kit-学习逻辑回归分类变量

在本节中,我们将了解 scikit learn 中的逻辑回归分类变量。

顾名思义,将数据分为不同的类别,或者我们可以说分类变量是一个单独分配给某个基本定性属性的特定组的变量。

代码:

在下面的代码中,我们将导入一些库如 import pandas as pdimport NumPy as np 也导入 copy。Pandas 用于操作和分析数据,NumPy 用于支持多个数组。

import pandas as pd
import numpy as np
import copy
%matplotlib inline

在这里,我们可以上传 CSV 数据文件,以获取客户的一些数据。

df_data.head() 用于显示文件内数据的前五行。

df_data = pd.read_csv('data.csv')

df_data.head()

在下面的输出中,我们可以看到,我们从屏幕上显示的数据集中获得了前五行。

scikit learn logistic regression categorical variable data

scikit learn logistic regression categorical variable data

print(df_data.info()) 用于打印屏幕上的数据信息。

print(df_data.info())

Printing the data info

Printing the data info

生成箱线图是为了显示数据集的完整摘要。

df_data.boxplot('dep_time','origin',rot = 30,figsize=(5,6))

Boxplot

Boxplot

给你。如果在数据框中进行了任何更改,并且此更改不影响原始数据,则使用 copy()方法。

cat_df_data = df_data.select_dtypes(include=['object']).copy()

。hed()函数用于检查你是否有任何需要填充的内容

cat_df_data.head()

Filter the columns

Filter the columns

这里我们使用这些命令来检查数据集中的空值。由此,我们可以得到缺失值的总数。

print(cat_df_data.isnull().values.sum())

Missing values

Missing values

这将检查空值的列分布。

print(cat_df_data.isnull().sum())

column wise distribution

column-wise distribution

。value_count()方法用于返回每个类别的频率分布。

cat_df_data = cat_df_data.fillna(cat_df_data['tailnum'].value_counts().index[0])

现在,我们可以在分配不同的方法后再次检查空值,结果是零计数。

print(cat_df_data.isnull().values.sum())

Result of null value

Result of null value

。value_count() 方法用于分类特征的类别的频率分布。

print(cat_df_data['carrier'].value_counts())

Frequency distribution

Frequency distribution

这用于计算特征的不同类别。

print(cat_df_data['carrier'].value_counts().count())

Feature of different category

Feature of different category

  • SNS . bar plot(carrier _ count . index,carrier_count.values,alpha=0.9) 用于绘制条形图。
  • PLT . title(‘载波频率分布’)用于给柱状图命名。
  • plt.ylabel('出现次数',fontsize =12)用于给 y 轴加标签。
  • plt.xlabel('Carrier ',fontsize=12) 用于给 x 轴加标签。
import seaborn as sns
import matplotlib.pyplot as plt
carrier_count = cat_df_data['carrier'].value_counts()
sns.set(style="darkgrid")
sns.barplot(carrier_count.index, carrier_count.values, alpha=0.9)
plt.title('Frequency Distribution of Carriers')
plt.ylabel('Number of Occurrences', fontsize=12)
plt.xlabel('Carrier', fontsize=12)
plt.show()

在这张图片中,我们可以看到条形图绘制在屏幕上。

Bar graph of categorical variable

Bar graph of a categorical variable

  • labels = cat _ df _ data[' carrier ']。astype(' category '). cat . categories . to list()用于给图表加标签。
  • size =[counts[var _ cat]for var _ cat in labels]用于给出饼图的大小。
  • fig1,ax1 = plt.subplots() 用于绘制图表。
labels = cat_df_data['carrier'].astype('category').cat.categories.tolist()
counts = cat_df_data['carrier'].value_counts()
sizes = [counts[var_cat] for var_cat in labels]
fig1, ax1 = plt.subplots()
ax1.pie(sizes, labels=labels, autopct='%1.1f%%', shadow=True) #autopct is show the % on plot
ax1.axis('equal')
plt.show()

在下面的输出中,我们可以看到屏幕上绘制了一个饼图,其中的值被分成不同的类别。

Plotting the pie chart

Plotting the pie chart

阅读: Scikit 学习情绪分析

Scikit-learn 逻辑回归交叉验证

在本节中,我们将了解 scikit learn 中的逻辑回归交叉验证。

  • 正如我们所知,scikit 学习库用于集中建模数据。它只是专注于数据建模,而不是加载数据。
  • 这里使用 scikit learn 我们还创建了逻辑回归交叉验证的结果。
  • 交叉验证是一种在不同迭代中使用测试序列和测试模型的不同数据位置的方法。

代码:

在下面的代码中,我们导入不同的库来获得逻辑回归交叉验证的准确值。

  • x,y = make _ classification(n _ samples = 1000,n_features=20,n _ informative = 15,n_redundant=5,random_state=1) 用于创建数据集。
  • CV = KFold(n_splits=10,random_state=1,shuffle=True) 用于准备交叉验证程序。
  • model = LogisticRegression()用于创建模型。
  • score = cross_val_score(model,x,y,scoring='accuracy ',cv=CV,n_jobs=-1) 用于评估模型。
  • print(' Accuracy:% . 3f(% . 3f)' %(mean(score),std(score))) 用于准备绩效报告。
from numpy import mean
from numpy import std
from sklearn.datasets import make_classification
from sklearn.model_selection import KFold
from sklearn.model_selection import cross_val_score
from sklearn.linear_model import LogisticRegression

x, y = make_classification(n_samples=1000, n_features=20, n_informative=15, n_redundant=5, random_state=1)

CV = KFold(n_splits=10, random_state=1, shuffle=True)

model = LogisticRegression()

score = cross_val_score(model, x, y, scoring='accuracy', cv=CV, n_jobs=-1)

print('Accuracy: %.3f (%.3f)' % (mean(score), std(score)))

输出:

运行上述代码后,我们得到以下输出,从中我们可以看到交叉验证的准确性显示在屏幕上。

scikit learn logistic regression cross validation

scikit learn logistic regression cross-validation

sci kit-学习逻辑回归阈值

在本节中,我们将了解如何在 scikit learn 中获取逻辑回归阈值。

  • 众所周知,逻辑回归是一种防止二元分类的统计方法。二进制类被定义为 0 或 1,或者我们可以说是真或假。
  • 在这里,逻辑回归将每一行指定为真的概率,并且如果该值小于 0.5,则将该值作为 0 进行预测。
  • 阈值的默认值为 0.5。

代码:

在下面的代码中,我们将导入不同的方法,从中我们得到逻辑回归的阈值。阈值的默认值为 0.5,如果阈值小于 0.5,则我们将该值视为 0。

  • X,y = make _ classification(n _ samples = 1000,n_features=2,n_redundant=0,n_clusters_per_class=1,weights=[0.99],flip_y=0,random_state=4) 用于生成数据集。
  • trainX,testX,trainy,testy = train_test_split(X,y,test_size=0.5,random_state=2,strategy = y)用于将数据拆分为训练和测试。
  • models.fit(trainX,trainy) 用于拟合模型。
  • yhat = model . predict _ proba(testX)用于预测概率。
  • yhat = yhat[:,1] 仅用于保持正面结果的概率。
  • fpr,tpr,thresholds = roc_curve(testy,yhat) 用于计算 roc 曲线。
 from numpy import argmax
from sklearn.datasets import make_classification
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import roc_curve

X, y = make_classification(n_samples=1000, n_features=2, n_redundant=0,
	n_clusters_per_class=1, weights=[0.99], flip_y=0, random_state=4)

trainX, testX, trainy, testy = train_test_split(X, y, test_size=0.5, random_state=2, stratify=y)

models = LogisticRegression(solver='lbfgs')
models.fit(trainX, trainy)

yhat = model.predict_proba(testX)

yhat = yhat[:, 1]

fpr, tpr, thresholds = roc_curve(testy, yhat)
Jt = tpr - fpr
ix = argmax(Jt)
best_threshold = thresholds[ix]
print('Best Threshold=%f' % (best_threshold))

输出:

运行上面的代码后,我们得到下面的输出,其中我们可以看到阈值被打印在屏幕上。

scikit learn logistic regression threshold

scikit learn logistic regression threshold

因此,在本教程中,我们讨论了sci kit learn logistic regression,我们还涵盖了与其实现相关的不同示例。这是我们已经讨论过的例子列表。

  • sci kit-学习逻辑回归
  • sci kit-学习逻辑回归标准误差
  • sci kit-学习逻辑回归系数
  • sci kit-学习逻辑回归 p 值
  • sci kit-了解逻辑回归特性的重要性
  • sci kit-学习逻辑回归分类变量
  • Scikit-learn 逻辑回归交叉验证
  • sci kit-学习逻辑回归阈值

Bijay Kumar MVPBijay Kumar

Python 是美国最流行的语言之一。我从事 Python 工作已经有很长时间了,我在与 Tkinter、Pandas、NumPy、Turtle、Django、Matplotlib、Tensorflow、Scipy、Scikit-Learn 等各种库合作方面拥有专业知识。我有与美国、加拿大、英国、澳大利亚、新西兰等国家的各种客户合作的经验。查看我的个人资料。

enjoysharepoint.com/

Scikit 非线性学习[完整指南]

原文:https://pythonguides.com/scikit-learn-non-linear/

Python & Machine Learning training courses

在这个 Python 教程中,我们将学习Scikit 如何学习非线性工作,我们还将涵盖与 Scikit 学习非线性相关的不同示例。此外,我们将涵盖这些主题。

  • Scikit 学习非线性
  • Scikit 学习非线性回归
  • Scikit 学习非线性回归示例
  • Scikit 学习非线性 SVM
  • Scikit 学习非线性模型
  • Scikit 学习非线性分类器
  • Scikit 学习非线性降维
  • Scikit 学习非线性 PCA

在继续本教程之前,我们建议您阅读一下什么是 Python 中的 Scikit Learn

目录

Scikit 学习非线性

在本节中,我们将学习 Scikit 如何学习 python 中的非线性作品。

代码:

在下面的代码中,我们将导入一些库,从中我们可以创建 scikit 学习非线性。

  • x = num . sort(5 * num . random . rand(42,1),axis=0) 用于生成相同的数据。
  • y[::5]+= 3 *(0.5–num . rand . rand(9))用于向目标添加噪声。
  • svrrbf = SVR(kernel="rbf ",C=100,gamma=0.1,epsilon=0.1) 用于它的回归模型。
  • lw = 2 用来看结果。
  • fig,axes = plot.subplots(nrows=1,ncols=3,figsize=(15,10),sharey=True) 用于在屏幕上绘制图形和轴。
  • 轴【ix】。plot(x,svr.fit(x,y)。predict(x),color=model_color[ix],lw=lw,label{}model”。format(kernel_label[ix]),)用于在屏幕上绘制轴。
  • 轴【ix】。scatter(x[svr.support_],y[svr.support_],facecolor="none ",edgecolor=model_color[ix],s=50,label="{} support vectors "。format(kernel_label[ix]),)用于在屏幕上绘制散点图。
  • fig.text(0.5,0.04," data ",ha="center ",va="center") 用于文字到图形。
import numpy as num
from sklearn.svm import SVR
import matplotlib.pyplot as plot

x = num.sort(5 * num.random.rand(42, 1), axis=0)
y = num.sin(x).ravel()
y[::5] += 3 * (0.5 - num.random.rand(9))

svrrbf = SVR(kernel="rbf", C=100, gamma=0.1, epsilon=0.1)

lw = 2

svrs = [svrrbf]
kernel_label = ["RBF"]
model_color = ["m"]

fig, axes = plot.subplots(nrows=1, ncols=3, figsize=(15, 10), sharey=True)
for ix, svr in enumerate(svrs):
    axes[ix].plot(
        x,
        svr.fit(x, y).predict(x),
        color=model_color[ix],
        lw=lw,
        label="{} model".format(kernel_label[ix]),
    )
    axes[ix].scatter(
        x[svr.support_],
        y[svr.support_],
        facecolor="none",
        edgecolor=model_color[ix],
        s=50,
        label="{} support vectors".format(kernel_label[ix]),
    )
    axes[ix].scatter(
        x[num.setdiff1d(num.arange(len(x)), svr.support_)],
        y[num.setdiff1d(num.arange(len(x)), svr.support_)],
        facecolor="none",
        edgecolor="r",
        s=50,
        label="other training data",
    )

fig.text(0.5, 0.04, "data", ha="center", va="center")
fig.text(0.06, 0.5, "target", ha="center", va="center", rotation="vertical")
plot.show()

输出:

运行上面的代码后,我们得到下面的输出,我们可以看到非线性数据显示在屏幕上。

Scikit learn non linear

Scikit learn non-linear

阅读: Scikit-learn 逻辑回归

Scikit 学习非线性回归

在本节中,我们将学习Scikit 如何在 python 中学习非线性回归工作

  • 回归被定义为有监督的机器学习技术。有两种类型的回归算法线性和非线性。
  • 这里,我们可以使用非线性回归技术,该技术用于描述非线性及其取决于一个或多个独立变量的参数。

代码:

在下面的代码中,我们将学习一些库,从中我们可以创建一个非线性回归模型。

  • df = PDS . read _ CSV(" regression China _ GDP . CSV ")用于读取我们正在导入的文件。
  • plot.figure(figsize=(8,5)) 用于绘制图形。
  • x_data,y_data = (df[“年”]。值,df[“值”]。【数值)用于描述数值和年份。
  • plot.plot(x_data,y_data,' ro') 用于绘制 x 数据和 y 数据。
  • plot.ylabel('GDP') 用于绘制 y 标签。
  • plot.xlabel('Year') 用于绘制 x 标签。
import numpy as num
import pandas as pds
import matplotlib.pyplot as plot
df = pds.read_csv("regressionchina_gdp.csv")
df.head(10)
plot.figure(figsize=(8,5))
x_data, y_data = (df["Year"].values, df["Value"].values)
plot.plot(x_data, y_data, 'ro')
plot.ylabel('GDP')
plot.xlabel('Year')
plot.show()

scikit learn non linear regression

scikit learn non-linear regression

在下面的代码中,我们选择一个模型在屏幕上绘制一个线性回归。

  • plot.plot(x,y) 用于绘制屏幕上的 x 和 y。
  • plot.ylabel('因变量')用于在屏幕上绘制 y 标签。
  • plot . xlabel(' independent 变量')用于在屏幕上绘制 x 标签。
x = np.arange(-5.0, 5.0, 0.1)
y = 1.0 / (1.0 + np.exp(-x))
plot.plot(x,y) 
plot.ylabel('Dependent Variable')
plot.xlabel('Indepdendent Variable')
plot.show()

scikit learn non linear regression choosing a model

scikit learn non-linear regression choosing a model

这里,我们可以使用逻辑函数来构建我们的非线性模型。

现在, plot.plot(x_data,Y_pred*15000000000000。)用于绘制相对于数据点的初始位置。

def sigmoid(x, Beta_1, Beta_2):
     y = 1 / (1 + np.exp(-Beta_1*(x-Beta_2)))
     return y
beta1 = 0.10
beta2 = 1990.0
**#logistic function**
Y_pred = sigmoid(x_data, beta1 , beta2)

plot.plot(x_data, Y_pred*15000000000000.)
plot.plot(x_data, y_data, 'ro')

scikit learn non linear regression building a model

scikit learn non-linear regression building a model

在这里,我们可以标准化我们的数据,使曲线的最佳拟合。

  • plot.figure(figsize=(8,5)) 用于在屏幕上绘制图形。
  • plot.plot(xdata,ydata,' ro ',label='data') 用于在屏幕上绘制 ydata 和 xdata。
  • plot.plot(x,y,linewidth=3.0,label='fit') 用于在屏幕上绘制拟合线。
 xdata =x_data/max(x_data)
ydata =y_data/max(y_data)
from scipy.optimize import curve_fit
popt, pcov = curve_fit(sigmoid, xdata, ydata)
**# Now we plot our resulting regression model.**
x = np.linspace(1960, 2015, 55)
x = x/max(x)
plot.figure(figsize=(8,5))
y = sigmoid(x, *popt)
plot.plot(xdata, ydata, 'ro', label='data')
plot.plot(x,y, linewidth=3.0, label='fit')
plot.legend(loc='best')
plot.ylabel('GDP')
plot.xlabel('Year')
plot.show()

运行上面的代码后,我们得到下面的输出,其中我们可以看到屏幕上绘制的非线性最佳拟合线。

scikit learn non linear regression best fit parameter

scikit learn non-linear regression best fit parameter

阅读: Scikit 学习决策树

Scikit 学习非线性回归示例

在本节中,我们将了解Scikit 如何学习 python 中的非线性回归示例

非线性回归被定义为在因变量和自变量之间建立关系的二次回归。这个数据用曲线表示。

代码:

在下面的代码中,我们将导入一些库,非线性回归示例通过这些库工作。

  • df = PDS . read _ csv(" regression China _ GDP . CSV ")用于读取我们加载的 CSV 文件。
  • y = 1/(1+NP . exp(-Beta _ 1 *(x-Beta _ 2)))用于定义一个 sigmoid 函数。
  • ypred = sigmoid(x_data,beta1,beta2) 用作逻辑函数。
  • plot.plot(x_data,ypred * 1600000000000。)用于绘制数据点的初始预测。
  • plot.plot(x_data,y_data,' go') 用于在图形上绘制 x_data 和 y_data。
import numpy as num
import pandas as pds
import matplotlib.pyplot as plot

df = pds.read_csv("regressionchina_gdp.csv")

def sigmoid(x, Beta_1, Beta_2):
     y = 1 / (1 + np.exp(-Beta_1*(x-Beta_2)))
     return y

beta1 = 0.10
beta2 = 1990.0

ypred = sigmoid(x_data, beta1, beta2)

plot.plot(x_data, ypred * 16000000000000.)
plot.plot(x_data, y_data, 'go')

输出:

运行上面的代码后,我们得到下面的输出,可以看到曲线显示了图形的非线性。

scikit learn non linear regression example

scikit learn non-linear regression example

阅读: Scikit 学习层次聚类

Scikit 学习非线性 SVM

在本节中,我们将学习scikit 如何学习 python 中的非线性 SVM 工作方式

  • 非线性 SVM 代表支持向量机,支持向量机是一种监督机器学习算法,用于分类和回归。
  • 正如我们所知,非线性被定义为因变量和自变量之间的关系,它用曲线来描述模型。

代码:

在下面的代码中,我们将导入一些库,从中我们可以制作一个非线性 SVM 模型。

  • x = num . randn . randn(350,2) 用于生成随机数。
  • 分类器= svm。NuSVC() 用于制作 svm 分类器
  • classifier.fit(x,Y) 用于拟合模型。
  • Z = classifier . decision _ function(NP . c _[xx . ravel(),yy.ravel()]) 用于绘制网格上每个数据点的决策函数。
  • plot.imshow(Z,interpolation='nearest ',extent=(xx.min(),xx.max(),yy.min(),yy.max()),aspect='auto ',origin='lower ',cmap=plot.cm.PuOr_r) 用于在屏幕上绘制图形。
  • plot.scatter(x[:,0],x[:,1],s=35,c=Y,cmap=plot.cm.Paired) 用于在网格上绘制散点。
import numpy as num
import matplotlib.pyplot as plot
from sklearn import svm

xx, yy = num.meshgrid(num.linspace(-3, 3, 500),
                     num.linspace(-3, 3, 500))
num.random.seed(0)
x = num.random.randn(350, 2)
Y = num.logical_xor(x[:, 0] > 0, x[:, 1] > 0)

classifier = svm.NuSVC()
classifier.fit(x, Y)

Z = classifier.decision_function(np.c_[xx.ravel(), yy.ravel()])
Z = Z.reshape(xx.shape)

plot.imshow(Z, interpolation='nearest',
           extent=(xx.min(), xx.max(), yy.min(), yy.max()), aspect='auto',
           origin='lower', cmap=plot.cm.PuOr_r)
contours = plot.contour(xx, yy, Z, levels=[0], linewidths=2,
                       linetypes='--')
plot.scatter(x[:, 0], x[:, 1], s=35, c=Y, cmap=plot.cm.Paired)
plot.xticks(())
plot.yticks(())
plot.axis([-3, 3, -3, 3])
plot.show()

输出:

运行上述代码后,我们得到以下输出,其中我们可以看到屏幕上绘制了 Scikit learn 非线性 SVM 图。

scikit learn non linear SVM

scikit learn non-linear SVM

阅读: Scikit 学习隐马尔可夫模型

Scikit 学习非线性模型

在本节中,我们将了解Scikit 如何在 python 中学习非线性模型的工作方式

  • 非线性模型根据一个或多个独立变量定义了数据及其参数之间的非线性关系。
  • 非线性显示在数据点形成曲线的地方,由此证明了数据的非线性。

代码:

在下面的代码中,我们将导入一些库,从中我们可以看到非线性模型的工作原理。

  • range = num . random . random state(0)用于生成随机状态。
  • lendata =(data max–data min)用于获取数据的长度。
  • data = num . sort(range . rand(n sample) lendata–lendata/2)*用于对数据进行排序,以便绘图。
  • 目标=数据 * 3–0.6 数据 2 +噪声**用于制作目标。
  • 完整数据= pds。DataFrame({"input feature": data," target": target}) 用于从 DataFrame 中获取完整的数据。
  • 非线性数据= sns .散点图(data=full_data,x="input feature ",y="target ",color="blue ",alpha=0.5) 用于在图形上绘制散点。
import numpy as num

range = num.random.RandomState(0)

nsample = 100
datamax, datamin = 1.5, -1.5
lendata = (datamax - datamin)

data = num.sort(range.rand(nsample) * lendata - lendata / 2)
noise = range.randn(nsample) * .3
target = data ` 3 - 0.6 * data ` 2 + noise
import pandas as pds

full_data = pds.DataFrame({"input feature": data, "target": target})
import seaborn as sns

nonlineardata = sns.scatterplot(data=full_data, x="input feature", y="target",
color="blue", alpha=0.5)

输出:

运行上述代码后,我们得到以下输出,其中我们可以看到屏幕上绘制了 Scikit learn 非线性模型。

Scikit learn non linear model

Scikit learn non-linear model

阅读: Scikit 学习岭回归

Scikit 学习非线性分类器

在本节中,我们将了解Scikit 如何学习 python 中的非线性分类器

非线性分类器被定义为用于描述非线性及其取决于一个或多个独立变量的参数的分类过程。

代码:

在下面的代码中,我们将导入一些库,从中我们可以创建一个非线性分类器。

  • x = x.copy() 用于复制数据。
  • x = num.random.normal(size=(n,2)) 用于生成随机数。
  • xtrain,xtest,ytrain,ytest = train_test_split(x,y,random_state=0,test_size=0.5) 用于将数据集拆分为训练数据和测试数据。
  • plot.figure(figsize=(5,5)) 用于在屏幕上绘制图形。
  • plot.scatter(xtrain[:,0],xtrain[:,1],c=ytrain,edge colors = ' r ');用于在屏幕上绘制散点图。
import numpy as num
import matplotlib.pyplot as plot

from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score

%config InlineBackend.figure_format = 'svg' 
plot.style.use('bmh')
plot.rcParams['image.cmap'] = 'Paired_r'
num.random.seed(5)

def f(x):
    x = x.copy()
    x[:,0] -= 0.4
    x[:,1] += 0.2
    return 1.1*x[:,0]**2 + 0.3*x[:,1]**2 - 0.6*x[:,0]*x[:,1]

def makedata():
    n = 800
    x = num.random.normal(size=(n, 2))
    y = f(x) < 0.5
    x += num.random.normal(size=(n,2), scale=0.2)
    return x, y

x, y = makedata()

xtrain, xtest, ytrain, ytest = train_test_split(x, y, random_state=0, test_size=0.5)

plot.figure(figsize=(5,5))
plot.scatter(xtrain[:,0], xtrain[:,1], c=ytrain, edgecolors='r');

scikit learn non linear classifier

scikit learn a non-linear classifier

在下面的代码中,我们将绘制分类器的边界。

  • xx,YY = num . mesh grid(num . arange(x _ min,x_max,h),num.arange(y_min,y_max,h)) 用于在屏幕上创建网格。
  • Z = classifier . predict(num . c _[xx . ravel(),yy.ravel()]) 用于预测分类器。
  • plot.figure(figsize=(5,5)) 用于在屏幕上绘制分类器。
  • plot.scatter(X[:,0],X[:,1],c=Y,edge colors = ' r ');用于在屏幕上绘制散点图。
  • plot_boundary(classifier,xtrain,ytrain) 用于绘制分类器的边界。
  • accuracy_score(ytest,classifier.predict(xtest)) 用于预测准确率得分。
def plot_boundary(classifier, X, Y):
    h = 0.02
    x_min, x_max = X[:,0].min() - 10*h, X[:,0].max() + 10*h
    y_min, y_max = X[:,1].min() - 10*h, X[:,1].max() + 10*h
    xx, yy = num.meshgrid(num.arange(x_min, x_max, h),
                         num.arange(y_min, y_max, h))
    Z = classifier.predict(num.c_[xx.ravel(), yy.ravel()])
    Z = Z.reshape(xx.shape)

    plot.figure(figsize=(5,5))
    plot.contourf(xx, yy, Z, alpha=0.25)
    plot.contour(xx, yy, Z, colors='r', linewidths=0.7)
    plot.scatter(X[:,0], X[:,1], c=Y, edgecolors='r');
    from sklearn.linear_model import LogisticRegression
classifier = LogisticRegression().fit(xtrain, ytrain)

plot_boundary(classifier, xtrain, ytrain)
accuracy_score(ytest, classifier.predict(xtest))

scikit learn non linear classifier boundary

scikit learn non-linear classifier boundary

阅读: Scikit 学习线性回归

Scikit 学习非线性降维

在本节中,我们将了解 Scikit 如何在 python 中学习非线性降维

非线性降维用于在不丢失任何信息的情况下减少数据集中的项目数量。

代码:

在下面的代码中,我们将导入一些库,从中我们可以创建 scikit learn 非线性降维。

  • warnings . filter warnings(' ignore ')用于给出过滤器警告。
  • x,y = make _ s _ curve(n _ samples = 100)用于制作曲线。
  • digits = load _ digits(n _ class = 6)用于加载数字。
  • plot.figure(figsize=(12,8)) 用于在屏幕上绘制图形。
  • axis = plot . axes(projection = ' 3d ')用于在屏幕上绘制轴。
  • axis.scatter3D(x[:,0],x[:,1],x[:,2],c=y) 用于在图形上绘制散点图。
import sklearn

import numpy as num
import pandas as pds
import matplotlib.pyplot as plot
from mpl_toolkits.mplot3d import Axes3D

import warnings
import sys

warnings.filterwarnings('ignore')

%matplotlib inline
from sklearn.datasets import make_s_curve

x, y = make_s_curve(n_samples=100)
from sklearn.datasets import load_digits

digits = load_digits(n_class=6)
x_digits, y_digits  = digits.data, digits. target
print('Dataset Size : ', x_digits.shape, y_digits.shape)
plot.figure(figsize=(12,8))
axis = plot.axes(projection='3d')

axis.scatter3D(x[:, 0], x[:, 1], x[:, 2], c=y)
axis.view_init(10, -60);

输出:

运行上面的代码后,我们得到下面的输出,其中我们可以看到非线性的维数减少。

scikit learn non linear dimensionality reduction

Scikit learn non-linear dimensionality reduction

阅读: Scikit 学习超参数调整

Scikit 学习非线性 PCA

在这一节,我们将了解Scikit 如何学习 python 中的非线性 PCA 工作方式。我们将展示主成分分析和核主成分分析的区别。

  • 在这里,我们通过使用一个例子来解释不同之处,在这个例子中,一方面,核主成分分析能够找到将它们线性分开的数据的投影,而这在主成分分析的情况下不会发生。
  • PCA 代表主成分分析。在这个过程中,它是这个过程中使用的主要成分。也是降维方法有助于降维。
  • 现在,我们通过使用投影数据解释 PCA 与 KernalPCA 的差异来解释非线性 PCA 的例子。

代码:

在下面的代码中,我们将讲述在使用 PCA 投影数据时使用内核的优势。

在这段代码中,我们生成了两个嵌套数据集。

from sklearn.datasets import make_circles
from sklearn.model_selection import train_test_split

x, y = make_circles(n_samples=1_000, factor=0.3, noise=0.05, random_state=0)
x_train, x_test, y_train, y_test = train_test_split(x, y, stratify=y, random_state=0)

import matplotlib.pyplot as plot

_, (train_ax1, test_ax1) = plot.subplots(ncols=2, sharex=True, sharey=True, figsize=(8, 4))

train_ax1.scatter(x_train[:, 0], x_train[:, 1], c=y_train)
train_ax1.set_ylabel("Feature 1")
train_ax1.set_xlabel("Feature 0")
train_ax1.set_title("Train data")

test_ax1.scatter(x_test[:, 0], x_test[:, 1], c=y_test)
test_ax1.set_xlabel("Feature 0")
_ = test_ax1.set_title("Test data")

输出:

运行下面的代码后,我们得到下面的输出,我们可以快速查看两个嵌套生成的数据集。

  • 一个是训练数据集,另一个是测试数据集。
  • 来自每个类的样本不能线性分离,因为不存在线性分离的直线,通过该直线可以分割内部数据集和外部数据集。

scikit learn non linear PCA

Scikit learn non-linear PCA

在这段代码中,我们使用了带内核和不带内核的 PCA,看看在使用内核时会有什么影响。

  • 这里使用的内核是径向基函数(RBF)内核
  • orig _ data _ ax1 . set _ y label()用于给测试数据的 y 轴加标签。
  • orig _ data _ ax1 . set _ xlabel()用于给测试数据的 x 轴加标签。
  • orig _ data _ ax1 . set _ Title()用于给测试数据的图形标题加标签。
  • PCA _ proj _ ax1 . set _ y label()用于给 PCA 的 y 轴加标签。
  • PCA _ proj _ ax1 . set _ xlabel()用于给 PCA 的 x 轴加标签。
  • pca_proj_ax1.set_title() 用于为 PCA 给出图形的标题。
from sklearn.decomposition import PCA, KernelPCA

pca1 = PCA(n_components=2)
kernel_pca1 = KernelPCA(
    n_components=None, kernel="rbf", gamma=10, fit_inverse_transform=True, alpha=0.1
)

x_test_pca1 = pca1.fit(x_train).transform(x_test)
x_test_kernel_pca1 = kernel_pca1.fit(x_train).transform(x_test)

fig, (orig_data_ax1, pca_proj_ax1, kernel_pca_proj_ax1) = plot.subplots(
    ncols=3, figsize=(14, 4)
)

orig_data_ax1.scatter(x_test[:, 0], x_test[:, 1], c=y_test)
orig_data_ax1.set_ylabel("Feature 1")
orig_data_ax1.set_xlabel("Feature 0")
orig_data_ax1.set_title("Testing data")

pca_proj_ax1.scatter(x_test_pca1[:, 0], x_test_pca1[:, 1], c=y_test)
pca_proj_ax1.set_ylabel("Principal component 1")
pca_proj_ax1.set_xlabel("Principal component 0")
pca_proj_ax1.set_title("projection of test data\n using PCA")

kernel_pca_proj_ax1.scatter(x_test_kernel_pca1[:, 0], x_test_kernel_pca1[:, 1], c=y_test)
kernel_pca_proj_ax1.set_ylabel("Principal component 1")
kernel_pca_proj_ax1.set_xlabel("Principal component 0")
_ = kernel_pca_proj_ax1.set_title("projection of test data using\n Kernel PCA")

输出:

运行下面的代码后,我们得到了下面的输出,在这里我们可以看到测试数据的比较,使用 PCA 的测试数据投影,以及使用 KernelPCA 的测试数据投影。

  • 让我们修改一下,PCA 线性地变换数据,这意味着排列的系统将被居中,相对于它的方差重新调整所有分量,并最终被旋转。
  • 查看下面的输出,我们可以在中间的结构中看到,与缩放相关的结构没有变化。
  • 内核 PCA 允许进行非线性投影。
  • 在这里,通过使用 RBF 核,我们期望投影将打开数据集,同时关心保持在自然空间中彼此接近的数据点对的相对距离。
  • 我们可以在右边的 KernelPCA 结构中看到和观察到这样的差异。

Scikit learn non linear Kernel PCA

Scikit learn non-linear Kernel PCA

你也可以阅读 Scikit learn 上的教程。

因此,在本教程中,我们讨论了 Scikit 学习非线性,我们还涵盖了与其实现相关的不同示例。这是我们已经讨论过的例子列表。

  • Scikit 学习非线性
  • Scikit 学习非线性回归
  • Scikit 学习非线性回归示例
  • Scikit 学习非线性 SVM
  • Scikit 学习非线性模型
  • Scikit 学习非线性分类器
  • Scikit 学习非线性降维
  • Scikit 学习非线性 PCA

Bijay Kumar MVPBijay Kumar

Python 是美国最流行的语言之一。我从事 Python 工作已经有很长时间了,我在与 Tkinter、Pandas、NumPy、Turtle、Django、Matplotlib、Tensorflow、Scipy、Scikit-Learn 等各种库合作方面拥有专业知识。我有与美国、加拿大、英国、澳大利亚、新西兰等国家的各种客户合作的经验。查看我的个人资料。

enjoysharepoint.com/

Scikit 学习管道+示例

原文:https://pythonguides.com/scikit-learn-pipeline/

Python & Machine Learning training courses

在这个 Python 教程中,我们将学习 Scikit 学习管道如何在 Python 中工作,我们还将涵盖与 Scikit 学习管道相关的不同示例。此外,我们将涵盖这些主题。

  • Scikit 学习管道
  • Scikit 学习管道示例
  • Scikit 学习管道自定义功能
  • Scikit 了解管道的优势和劣势
  • Scikit 学习管道功能选择
  • Scikit 学习管道交叉验证
  • Scikit 学习管道熊猫
  • Scikit 学习管道酸洗
  • Scikit 学习管道网格搜索
  • Scikit 学习管道 one-hot 编码

目录

Scikit 学习管道

在这一节中,我们将学习 Scikit 如何在 python 中学习管道工作

管道被定义为收集数据和端到端组装的过程,该过程安排数据流,并且输出被形成为多个模型的集合。

代码:

在下面的代码中,我们将导入一些库,从中我们可以了解管道是如何工作的。

  • x,y = make _ class ification(random _ state = 0)用于进行分类。
  • x_train,x_test,y_train,y_test = train_test_split(x,y,random_state=0) 用于将数据集拆分为训练数据和测试数据。
  • pipeline = Pipeline([('scaler ',StandardScaler()),(' svc ',SVC())]) 用作估计器,避免将测试集泄露到训练集中。
  • pipeline.fit(x_train,y_train) 用于拟合模型。
  • pipeline.score(x_test,y_test) 用于计算管道的得分。
from sklearn.svm import SVC
from sklearn.preprocessing import StandardScaler
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split
from sklearn.pipeline import Pipeline
x, y = make_classification(random_state=0)
x_train, x_test, y_train, y_test = train_test_split(x, y,
                                                    random_state=0)
pipeline = Pipeline([('scaler', StandardScaler()), ('svc', SVC())])

pipeline.fit(x_train, y_train)
pipeline.score(x_test, y_test)

输出:

在下面的输出中,我们可以看到管道模型的精度分数打印在屏幕上。

Scikit learn Pipeline

Scikit learn Pipeline

阅读: Scikit 学习 KNN 教程

Scikit 学习管道示例

在本节中,我们将了解Scikit 如何学习 python 中的管道示例

管道是端到端的加密数据,并且还安排数据流,并且输出形成为一组多个模型。

代码:

在下面的代码中,我们将导入一些库,借助例子来解释管道模型。

  • iris = datasets . load _ iris()用于将数据导入 sklearn 进行虹膜分类。
  • x_train,x_test,y_train,y_test = train_test_split(x,y,test_size = 0.25) 用于将数据集拆分为训练数据和测试数据。
  • pipeline = Pipeline([('pca ',PCA(n_components = 4)),(' std ',StandardScaler()),(' Decision_tree ',Decision tree classifier()],verbose = True) 用于制作管道。
  • pipeline.fit(x_train,y_train) 用于拟合模型。
  • pipeline.get_params() 用于查看所有的超参数。
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.decomposition import PCA
from sklearn.tree import DecisionTreeClassifier

iris = datasets.load_iris()
x = iris.data
y = iris.target

x_train, x_test, y_train, y_test = train_test_split(x, y, test_size = 0.25)

from sklearn.pipeline import Pipeline
pipeline = Pipeline([('pca', PCA(n_components = 4)), ('std', StandardScaler()), ('Decision_tree', DecisionTreeClassifier())], verbose = True)

pipeline.fit(x_train, y_train)

# to see all the hyper parameters
pipeline.get_params()

输出:

运行上面的代码后,我们得到下面的输出,其中我们可以看到所有的超参数都显示在屏幕上,这些参数是在管道中传递的类中设置的。

scikit learn pipeline example

scikit learn pipeline example

阅读: Scikit 学习情绪分析

Scikit 学习管道自定义功能

在本节中,我们将了解scikit 如何学习 python 中的管道自定义函数

Scikit learn 自定义函数用于返回二维数组的值或者也用于删除离群值。

代码:

在下面的代码中,我们将导入一些库,从中我们可以解释管道自定义函数。

  • zip file _ path = OS . path . join(our _ path," housing.tgz") 用于设置 zip 文件的路径。
  • url lib . request . URL retrieve(our _ data _ URL,zipfile_path) 用于从 URL 获取文件。
  • our file _ path = OS . path . join(our _ path," housing.csv") 用于设置 csv 文件路径。
  • return PDS . read _ CSV(our file _ path)用于读取熊猫文件。
  • imputr = simple imputr(strategy = " median ")用于计算每列的中间值。
  • our dataset _ num = our _ dataset . drop(" ocean _ proximity ",axis=1) 用于移除海洋邻近度。
  • inputr . fit(our dataset _ num)用于拟合模型。
  • our _ text _ cats = our _ dataset[[' ocean _ proximity ']]用于选择文本属性。
  • rooms_per_household = x[:,rooms] / x[:,household] 用于通过划分适当的属性得到三个额外的属性。
import os
import tarfile
from six.moves import urllib

OURROOT_URL = "https://raw.githubusercontent.com/ageron/handson-ml/master/"
OURPATH = "datasets/housing"
OURDATA_URL = OURROOT_URL + OURPATH + "/housing.tgz"

def get_data(our_data_url=OURDATA_URL, our_path=OURPATH):
      if not os.path.isdir(our_path):
            os.makedirs(our_path)

      zipfile_path = os.path.join(our_path, "housing.tgz")

      urllib.request.urlretrieve(our_data_url, zipfile_path)
      ourzip_file = tarfile.open(zipfile_path)
      ourzip_file.extractall(path=our_path)
      ourzip_file.close()

get_data()

import pandas as pds

def loadour_data(our_path=OUR_PATH):
    ourfile_path = os.path.join(our_path, "housing.csv")

    return pds.read_csv(ourfile_path)

ourdataset = load_our_data()
ourdataset.head()
from sklearn.impute import SimpleImputer

imputer = SimpleImputer(strategy="median")

ourdataset_num = our_dataset.drop("ocean_proximity", axis=1)

imputer.fit(ourdataset_num)
**#transforming using the learnedparameters**
x = imputer.transform(ourdataset_num)
**#setting the transformed dataset to a DataFrame**
ourdataset_numeric = pds.DataFrame(x, columns=ourdataset_num.columns)
from sklearn.preprocessing import OrdinalEncoder

our_text_cats = our_dataset[['ocean_proximity']]
our_encoder = OrdinalEncoder()
**#transforming it**
our_encoded_dataset = our_encoder.fit_transform(our_text_cats)
import numpy as num
from sklearn.base import BaseEstimator, TransformerMixin
**#initialising column numbers**
rooms,  bedrooms, population, household = 4,5,6,7

class CustomTransformer(BaseEstimator, TransformerMixin):
    **#the constructor**
    def __init__(self, add_bedrooms_per_room = True):
        self.add_bedrooms_per_room = add_bedrooms_per_room
   ** #estimator method**
    def fit(self, x, y = None):
        return self
   ** #transfprmation**
    def transform(self, x, y = None):

        rooms_per_household = x[:, rooms] / x[:, household]
        population_per_household = x[:, population] / x[:, household]
        if self.add_bedrooms_per_room:
            bedrooms_per_room = x[:, bedrooms] / x[:, rooms]
            return num.c_[x, rooms_per_household, population_per_household, bedrooms_per_room]
        else:
            return num.c_[x, rooms_per_household, population_per_household]

attrib_adder = CustomTransformer()
our_extra_attributes = attrib_adder.transform(our_dataset.values)
from sklearn.pipeline import Pipeline
from sklearn.compose import ColumnTransformer
**#the numeric attributes transformation pipeline**
numericpipeline = Pipeline([
        ('imputer', SimpleImputer(strategy="median")),
        ('attribs_adder', CustomTransformer()),
    ])
numericattributes = list(our_dataset_numeric)
**#the textual transformation pipeline**
text_attribs = ["ocean_proximity"]
#setting the order of the two pipelines
our_full_pipeline = ColumnTransformer([
        ("numeric", numericpipeline, numericattributes),
        ("text", OrdinalEncoder(), text_attribs),
    ])
our_dataset_prepared = our_full_pipeline.fit_transform(our_dataset)
our_dataset_prepared

输出:

在下面的输出中,我们可以看到管道自定义函数返回值的二维数组。

scikit learn pipeline custom function

scikit learn pipeline custom function

阅读: Scikit 学习梯度下降

Scikit 学习管道的优势和劣势

在本节中,我们将学习 Python 中的 scikit learn pipeline 优缺点

Scikit 学习管道的优势

sci kit learn pipeline 是一个工具,它使我们的工作变得非常容易,我们可以很快理解所有事情。

  1. 它应用步骤的实现和顺序。
  2. 它可以收集数据和收集数据的过程。数据可以是实时的,也可以是各种来源的集合数据。
  3. 它可以支持松弛通知
  4. 它可以提供分布式计算选项。

sci kit 学习管道的缺点

  1. 它不支持自动管道选项。
  2. 它没有设计成在不使用数据库的情况下在相关任务之间传递数据。

阅读: Scikit 学习遗传算法

Scikit 学管道特征选择

在本节中,我们将学习scikit 如何在 python 中学习管道特性选择

特征选择被定义为选择特征或重复选择管线特征的方法。

代码:

在下面的代码中,我们将导入一些库,从中我们可以选择管道的特征。

  • x,y = make_classification() 用于进行分类。
  • x_train,x_test,y_train,y_test = train_test_split(x,y,random_state=42) 用于将数据集拆分为训练和测试数据。
  • ANOVA filter = selectk best(f _ classif,k=5) 用于选择最佳特征。
  • ANOVA _ SVM = make _ pipeline(ANOVA _ filter,classifier) 用于制作管道。
  • anova_svm.fit(x_train,y_train) 用于拟合模型。
  • 打印(classification_report(y_test,y_pred)) 用于打印分类报告。
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split

x, y = make_classification(
    n_features=22,
    n_informative=5,
    n_redundant=0,
    n_classes=4,
    n_clusters_per_class=4,
    random_state=44,
)
x_train, x_test, y_train, y_test = train_test_split(x, y, random_state=42)
from sklearn.feature_selection import SelectKBest, f_classif
from sklearn.pipeline import make_pipeline
from sklearn.svm import LinearSVC

anovafilter = SelectKBest(f_classif, k=5)
classifier = LinearSVC()
anova_svm = make_pipeline(anova_filter, classifier)
anova_svm.fit(x_train, y_train)
from sklearn.metrics import classification_report

y_pred = anova_svm.predict(x_test)
print(classification_report(y_test, y_pred))

输出:

运行上面的代码后,我们得到下面的输出,我们可以看到屏幕上显示了选择功能。

scikit learn pipeline feature selection

scikit learn pipeline feature selection

阅读: Scikit 学习分类教程

Scikit 学习管道交叉验证

在本节中,我们将学习Scikit 如何在 python 中学习管道交叉验证

Scikit learn pipeline 交叉验证技术被定义为评估静态模型结果的过程,该结果将扩展到看不见的数据。

代码:

在下面的代码中,我们将导入一些库,从中我们可以解释管道交叉验证模型。

  • best score _ idx = num . arg max(cv _ result[" mean _ test _ score "])用于计算最佳得分。
  • threshold = lower _ bound(cv _ result)用于计算下限模型的阈值。
  • best _ idx = candidate _ idx[cv _ result[" param _ reduce _ dim _ _ n _ components "]用于计算交叉验证的结果。
  • param _ grid = { " reduce _ dim _ _ n _ components ":[6,8,10,12,14]} 用于计算参数网格。
  • x,y = load _ digits(return _ X _ y = True)用于加载数字。
  • plot.bar(n_components,test_scores,width=1.4,color="r") 用于绘制条形。
  • plot.title("平衡模型复杂度和交叉验证分数")用于绘制图形的标题。
  • print(" best _ index _ is % d " % best _ index _)用于在屏幕上绘制最佳索引网格。
import numpy as num
import matplotlib.pyplot as plot

from sklearn.datasets import load_digits
from sklearn.decomposition import PCA
from sklearn.model_selection import GridSearchCV
from sklearn.pipeline import Pipeline
from sklearn.svm import LinearSVC

def lower_bound(cv_result):

    bestscore_idx = num.argmax(cv_result["mean_test_score"])

    return (
        cv_result["mean_test_score"][bestscore_idx]
        - cv_result["std_test_score"][bestscore_idx]
    )

def best_low_complexity(cv_result):

    threshold = lower_bound(cv_result)
    candidate_idx = num.flatnonzero(cv_result["mean_test_score"] >= threshold)
    best_idx = candidate_idx[
        cv_result["param_reduce_dim__n_components"][candidate_idx].argmin()
    ]
    return best_idx

pipeline = Pipeline(
    [
        ("reduce_dim", PCA(random_state=42)),
        ("classify", LinearSVC(random_state=42, C=0.01)),
    ]
)

param_grid = {"reduce_dim__n_components": [6, 8, 10, 12, 14]}

grid = GridSearchCV(
    pipeline,
    cv=10,
    n_jobs=1,
    param_grid=param_grid,
    scoring="accuracy",
    refit=best_low_complexity,
)
x, y = load_digits(return_X_y=True)
grid.fit(X, y)

n_components = grid.cv_results_["param_reduce_dim__n_components"]
test_scores = grid.cv_results_["mean_test_score"]

plot.figure()
plot.bar(n_components, test_scores, width=1.4, color="r")

lower = lower_bound(grid.cv_results_)
plot.axhline(np.max(test_scores), linestyle="--", color="y", label="Best score")
plot.axhline(lower, linestyle="--", color=".6", label="Best score - 1 std")

plot.title("Balance Model Complexity And Cross-validated Score")
plot.xlabel("Number Of PCA Components Used")
plot.ylabel("Digit Classification Accuracy")
plot.xticks(n_components.tolist())
plot.ylim((0, 1.0))
plot.legend(loc="upper left")

best_index_ = grid.best_index_

print("The best_index_ is %d" % best_index_)
print("The n_components selected is %d" % n_components[best_index_])
print(
    "The corresponding accuracy score is %.2f"
    % grid.cv_results_["mean_test_score"][best_index_]
)
plot.show()

输出:

运行上述代码后,我们得到以下输出,其中我们可以看到管道交叉验证分数打印在屏幕上。

scikit learn pipeline cross validation

scikit learn pipeline cross-validation

阅读: Scikit 学习超参数调整

Scikit 学习管道熊猫

在这一节中,我们将学习Scikit 如何在 python 中学习 pipeline pandas 的工作方式

Scikit learn pipeline pandas 被定义为一个允许我们将各种用户定义的函数串在一起以构建管道的过程。

代码:

在下面的代码中,我们将导入一些库,在熊猫的帮助下,我们可以从这些库中绘制管道。

  • pca = pca() 用于定义一个流水线来搜索 PCA 的最佳组合。
  • scaler = StandardScaler() 用于定义一个标准的 scaler 来归一化输入。
  • pipeline = Pipeline(步骤=[("scaler ",scaler),(" pca ",pca),(" logistic ",logisticregr)]) 用于定义流水线的步骤。
  • search grid = GridSearchCV(pipeline,param_grid,n_jobs=2) 用于定义网格搜索。
  • print("最佳参数(CV 分数= % 0.3f):" % search grid . Best _ score _)用于定义最佳参数分数。
  • pca.fit(x_digits) 用于拟合模型。
import numpy as num
import matplotlib.pyplot as plot
import pandas as pds

from sklearn import datasets
from sklearn.decomposition import PCA
from sklearn.linear_model import LogisticRegression
from sklearn.pipeline import Pipeline
from sklearn.model_selection import GridSearchCV
from sklearn.preprocessing import StandardScaler

pca = PCA()
scaler = StandardScaler()
logisticregr = LogisticRegression(max_iter=10000, tol=0.2)
pipeline = Pipeline(steps=[("scaler", scaler), ("pca", pca), ("logistic", logisticregr)])

x_digits, y_digits = datasets.load_digits(return_X_y=True)
param_grid = {
    "pca__n_components": [5, 15, 30, 45, 60],
    "logistic__C": np.logspace(-4, 4, 4),
}
searchgrid = GridSearchCV(pipeline, param_grid, n_jobs=2)
searchgrid.fit(x_digits, y_digits)
print("Best parameter (CV score=%0.3f):" % searchgrid.best_score_)
print(searchgrid.best_params_)
pca.fit(x_digits)

fig, (axis0, axis1) = plot.subplots(nrows=2, sharex=True, figsize=(6, 6))
axis0.plot(
    num.arange(1, pca.n_components_ + 1), pca.explained_variance_ratio_, "+", linewidth=2
)
axis0.set_ylabel("PCA explained variance ratio")

axis0.axvline(
    searchgrid.best_estimator_.named_steps["pca"].n_components,
    linestyle=":",
    label="n_components chosen",
)
axis0.legend(prop=dict(size=12))

**# For each number of components, find the best classifier results**
results = pds.DataFrame(searchgrid.cv_results_)
components_col = "param_pca__n_components"
best_classifications = results.groupby(components_col).apply(
    lambda g: g.nlargest(1, "mean_test_score")
)

best_classifications.plot(
    x=components_col, y="mean_test_score", yerr="std_test_score", legend=False, ax=axis1
)
axis1.set_ylabel("Classification accuracy (val)")
axis1.set_xlabel("n_components")

plot.xlim(-1, 70)

plot.tight_layout()
plot.show()

输出:

运行上面的代码后,我们得到下面的输出,其中我们可以看到管道是在 pandas 的帮助下绘制的。

scikit learn pipeline pandas

scikit learn pipeline pandas

阅读: Scikit 学习线性回归+例题

Scikit 学习管道酸洗

在这一节中,我们将了解Scikit 如何在 python 中学习 pipeline pickle 的工作方式

Scikit 学习管道 pickle 被定义为一个定期保存文件的过程,或者我们可以说是序列化对象的方式。

代码:

在下面的代码中,我们将导入一些库,在 pickle 的帮助下,我们可以从这些库中序列化数据。

  • x_train = num.array([[3,9,6],[5,8,3],[2,10,5]]) 用于创建一些数据。
  • pipeline.fit(x_train,y_train) 用于训练模型。
  • model = pipeline . named _ steps[' randomforestclassifier ']用于酸洗模型。
from sklearn.ensemble import RandomForestClassifier
from sklearn.pipeline import make_pipeline
import pickle
import numpy as num

pipeline = make_pipeline(

    RandomForestClassifier(),
)

x_train = num.array([[3,9,6],[5,8,3],[2,10,5]])
y_train = num.array([27, 30, 19])

pipeline.fit(x_train, y_train)

model = pipeline.named_steps['randomforestclassifier']
outfile = open("model.pkl", "wb")
pickle.dump(model, outfile)
outfile.close()
model

输出:

运行上述代码后,我们得到以下输出,其中我们可以看到屏幕上显示了 Scikit 学习管道 pickle。

Scikit learn Pipeline Pickle

Scikit learn Pipeline Pickle

阅读: Scikit 学习功能选择

Scikit 学习管道网格搜索

在本节中,我们将了解 Scikit learn pipeline grid search 如何在 python 中工作。

Scikit learn pipeline grid search 是一种定义超参数的操作,它告诉用户模型的准确率。

代码:

在下面的代码中,我们将导入一些库,从中我们可以计算模型的准确率。

  • n_feature_options = [4,8,12] 用于创建特征选项。
  • grid = GridSearchCV(pipeline,n_jobs=1,param_grid=param_grid) 用于创建网格搜索。
  • mean _ scores = mean _ scores . max(axis = 0)用于选择最佳 c 的得分
  • plot.bar(bar_offsets + i,reducer_scores,label=label,color=COLORS[i]) 用于在图形上绘制条形。
  • plot.title("比较特征缩减技术")用于在图上绘制标题。
 import numpy as num
import matplotlib.pyplot as plot
from sklearn.datasets import load_digits
from sklearn.model_selection import GridSearchCV
from sklearn.pipeline import Pipeline
from sklearn.svm import LinearSVC
from sklearn.decomposition import PCA, NMF
from sklearn.feature_selection import SelectKBest, chi2

pipeline = Pipeline(
    [
        **# the reduce_dim stage is populated by the param_grid**
        ("reduce_dim", "passthrough"),
        ("classify", LinearSVC(dual=False, max_iter=10000)),
    ]
)

n_feature_options = [4, 8, 12]
c_options = [1, 10, 100, 1000]
param_grid = [
    {
        "reduce_dim": [PCA(iterated_power=7), NMF()],
        "reduce_dim__n_components": n_feature_options,
        "classify__C": c_options,
    },
    {
        "reduce_dim": [SelectKBest(chi2)],
        "reduce_dim__k": n_feature_options,
        "classify__C": c_options,
    },
]
reducer_labels = ["PCA", "NMF", "KBest(chi2)"]

grid = GridSearchCV(pipeline, n_jobs=1, param_grid=param_grid)
x, y = load_digits(return_X_y=True)
grid.fit(x, y)

mean_scores = num.array(grid.cv_results_["mean_test_score"])

mean_scores = mean_scores.reshape(len(c_options), -1, len(n_feature_options))

mean_scores = mean_scores.max(axis=0)
bar_offsets = np.arange(len(n_feature_options)) * (len(reducer_labels) + 1) + 0.5

plot.figure()
COLORS = "cyr"
for i, (label, reducer_scores) in enumerate(zip(reducer_labels, mean_scores)):
    plot.bar(bar_offsets + i, reducer_scores, label=label, color=COLORS[i])

plot.title("Comparing Feature Reduction Techniques")
plot.xlabel("Reduced Number Of Features")
plot.xticks(bar_offsets + len(reducer_labels) / 2, n_feature_options)
plot.ylabel("Digit Classification Accuracy")
plot.ylim((0, 1))
plot.legend(loc="Upper Left")

plot.show()

输出:

在下面的输出中,我们可以看到屏幕上绘制了 scikit 学习管道网格搜索栏。

scikit learn pipeline grid search

scikit learn pipeline grid search

阅读: Scikit 学习岭回归

Scikit 学习流水线 one-hot 编码

在本节中,我们将了解Scikit 如何学习 python 中的管道一热编码工作

Scikit 学习管道 one-hot 编码被定义或表示分类变量。在这种情况下,对分类变量的需求被映射为整数值。

代码:

在下面的代码中,我们将导入一些库,从中我们可以进行一次性编码。

  • y = range . poisson(lam = num . exp(x[:,5]) / 2) 用于获取正的整数目标。
  • x_train,x_test,y_train,y_test = train_test_split(x,y,random_state=range) 用于将数据集拆分成测试数据或训练数据。
  • set _ config(display = " diagram ")用于配置数据。
  • num _ proc = make _ pipeline(simple imputr(strategy = " median "),StandardScaler()) 用于制作管道。
import numpy as num
from sklearn.model_selection import train_test_split
from sklearn.linear_model import PoissonRegressor
from sklearn.ensemble import HistGradientBoostingRegressor

nsamples, nfeatures = 1000, 20
range = num.random.RandomState(0)
x = range.randn(nsamples, nfeatures)

y = range.poisson(lam=num.exp(x[:, 5]) / 2)
x_train, x_test, y_train, y_test = train_test_split(x, y, random_state=range)
glm = PoissonRegressor()
gbdt = HistGradientBoostingRegressor(loss="poisson", learning_rate=0.01)
glm.fit(x_train, y_train)
gbdt.fit(x_train, y_train)
print(glm.score(x_test, y_test))
print(gbdt.score(x_test, y_test))
from sklearn import set_config
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import OneHotEncoder, StandardScaler
from sklearn.impute import SimpleImputer
from sklearn.compose import make_column_transformer
from sklearn.linear_model import LogisticRegression

set_config(display="diagram")

num_proc = make_pipeline(SimpleImputer(strategy="median"), StandardScaler())

cat_proc = make_pipeline(
    SimpleImputer(strategy="constant", fill_value="missing"),
    OneHotEncoder(handle_unknown="ignore"),
)

preprocessor = make_column_transformer(
    (num_proc, ("feat1", "feat3")), (cat_proc, ("feat0", "feat2"))
)

classifier = make_pipeline(preprocessor, LogisticRegression())
classifier

输出:

运行上述代码后,我们得到以下输出,从中可以看到屏幕上完成了 scikit 学习管道 one-hot 编码。

scikit learn pipeline one hot encoding

scikit learn pipeline one-hot encoding

您可能还想阅读以下 Scikit 学习教程。

因此,在本教程中,我们讨论了 Scikit 学习管道,我们还涵盖了与其实现相关的不同示例。这是我们已经讨论过的例子列表。

  • Scikit 学习管道
  • Scikit 学习管道示例
  • Scikit 学习管道自定义功能
  • Scikit 了解管道的优势和劣势
  • Scikit 学习管道功能选择
  • Scikit 学习管道交叉验证
  • Scikit 学习管道熊猫
  • Scikit 学习管道酸洗
  • Scikit 学习管道网格搜索
  • Scikit 学习管道 one-hot 编码

Bijay Kumar MVPBijay Kumar

Python 是美国最流行的语言之一。我从事 Python 工作已经有很长时间了,我在与 Tkinter、Pandas、NumPy、Turtle、Django、Matplotlib、Tensorflow、Scipy、Scikit-Learn 等各种库合作方面拥有专业知识。我有与美国、加拿大、英国、澳大利亚、新西兰等国家的各种客户合作的经验。查看我的个人资料。

enjoysharepoint.com/

Scikit 学习随机森林

原文:https://pythonguides.com/scikit-learn-random-forest/

Python & Machine Learning training courses

在这个 Python 教程中,我们将学习如何在 Python 中创建一个 scikit 学习随机森林,我们还将涵盖与随机森林相关的不同示例。我们将讨论这些话题。

  • Scikit 学习随机森林
  • Scikit 学习随机森林示例
  • Scikit 学习随机森林回归
  • Scikit 学习随机森林超参数调整
  • Scikit 学习随机森林特征重要性
  • Scikit 学习随机森林分类变量
  • Scikit 学习随机森林交叉验证
  • Scikit 学习随机森林可视化

目录

Scikit 学习随机森林

在这一节中,我们将学习如何用 python 让 scikit 学习随机森林。

  • 随机森林是一种受监督的机器学习模型,用于解决回归或分类问题。
  • 它是一种结合许多分类器的技术,以简单的方式解决困难或复杂的问题。
  • 它基于决策树的预测生成结果,该决策树通过取许多树的输出的平均值来进行预测。
  • 它也有一个限制,即减少数据集的过拟合,提高精度。

scikit learn Random Forest

scikit learn Random Forest

另外,检查: Scikit-learn 逻辑回归

Scikit 学习随机森林示例

在本节中,我们将学习如何创建一个 scikit 学习python 中的随机森林示例

  • 随机森林是一种受监督的机器学习模型,用于分类、回归和所有其他使用决策树的任务。
  • 随机森林产生一组随机选择训练集子集的决策树。

代码:

在下面的代码中,我们将从 sklearn 导入数据集,并创建一个随机森林分类器。

  • iris = datasets . load _ iris()用于加载 iris 数据集。
  • X,y = datasets . load _ iris(return _ X _ y = True)用于将数据集分为训练数据集和测试数据集两部分。
  • from sk learn . model _ selection import train _ test _ split用于切割随机训练或测试子集中的数组。
  • X_train,X_test,y_train,y_test = train_test_split(X,y,test_size = 0.30) 这里有 70%的训练数据集和 30%的测试数据集。
from sklearn import datasets 

iris = datasets.load_iris()  
print(iris.target_names)

print(iris.feature_names)

X, y = datasets.load_iris( return_X_y = True)

from sklearn.model_selection import train_test_split

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.30)

运行上述代码后,我们得到以下输出,其中我们可以看到数据集的特征显示在屏幕上。

scikit learn random forest dataset

scikit learn a random forest dataset

print(data.head()) 用于在屏幕上打印数据集的前五行。

from sklearn.ensemble import RandomForestClassifier
import pandas as pd
data = pd.DataFrame({'sepallength' : iris.data[:,0],'sepalwidth' : iris.data[:,1], 'petallength' : iris.data[:,2], 'petalwidth' : iris.data[:,3],'species' : iris.target})
print(data.head())

运行上面的代码后,我们得到下面的输出,我们可以看到前五行打印在屏幕上。

scikit learn random forest import dataset

scikit learn random forest import dataset

  • classifier = RandomForestClassifier(n _ estimators = 100)用于创建随机森林分类器。
  • classifier.fit(X_train,y_train) 用于拟合函数,使用训练集训练模型。
  • y _ pred = classifier . predict(X _ test)用于对测试数据集进行预测。
  • 从 sklearn 导入指标用于从指标中找出准确度或误差。
  • print("模型精度: ",metrics.accuracy_score(y_test,y_pred)) 用于打印计算后的模型精度。
classifier = RandomForestClassifier(n_estimators = 100) 

classifier.fit(X_train, y_train)

y_pred = classifier.predict(X_test)

from sklearn import metrics 
print()

print("Accuracy of the model: ", metrics.accuracy_score(y_test, y_pred))

在这张图片中,我们可以看到随机森林模型的准确性。

scikit learn random forest accuracy

scikit learn random forest accuracy

阅读:Scikit-learn Vs tensor flow–详细对比

Scikit 学习随机森林回归

在本节中,我们将学习 python 中的scikit learn random forest regression

随机森林是一种受监督的机器学习算法,它是一种合并许多分类器以提供困难问题解决方案的技术,类似于回归方法。

代码:

在下面的代码中,我们将导入 sklearn 库,从中我们可以创建一个随机森林回归。

  • x,y = make_regression(n_features=4,n _ informative = 2,random_state=0,shuffle=False) 用于进行随机森林回归。
  • print(regression . predict([[0,0,0,0]])用于预测回归。
from sklearn.ensemble import RandomForestRegressor
from sklearn.datasets import make_regression
x, y = make_regression(n_features=4, n_informative=2,
                        random_state=0, shuffle=False)
regression = RandomForestRegressor(max_depth=2, random_state=0)
regression.fit(x, y)
RandomForestRegressor(...)
print(regression.predict([[0, 0, 0, 0]]))

输出:

运行上述代码后,我们得到以下输出,其中我们可以看到随机森林回归预测。

scikit learn random forest regression

scikit learn random forest regression

阅读: Scikit 学习决策树

Scikit 学习随机森林超参数调整

在本节中,我们将了解如何让 scikit 学习 python 中的随机森林超参数调整

随机森林超参数调整涉及森林中的若干决策树和每棵树在被分割成不同部分时所考虑的若干特征。

代码:

在下面的代码中,我们将从 sklearn.esemble 导入 RandomForestRegressor ,并且从 print 导入print

print(' Parameters currently in use:\ n ')用于打印当前森林使用的当前参数。

from sklearn.ensemble import RandomForestRegressor
rf = RandomForestRegressor(random_state = 42)
from pprint import pprint

print('Parameters currently in use:\n')
pprint(rf.get_params())

输出:

运行上面的代码后,我们得到下面的输出,我们可以看到当前的参数被打印在屏幕上。

Random forest hyperparameter tunning current parameter

Random forest hyperparameter tunning current parameter

  • n _ estimators =[int(x)for x in NP . Lin space(start = 200,stop = 2000,num = 10)] 它解释了随机森林中树的数量。
  • max_features = ['auto ',' sqrt'] 这是每次分割时要考虑的特征数量。
  • max _ depth =[int(x)for x in NP . Lin space(10,110,num = 11)] 是树中的最大层数。
  • min_samples_split = [2,5,10] 是分裂一个节点所需的最小样本数。
  • min_samples_leaf = [1,2,4] 是每个叶节点所需的最小样本数。
from sklearn.model_selection import RandomizedSearchCV
import numpy as np
n_estimators = [int(x) for x in np.linspace(start = 200, stop = 2000, num = 10)]

max_features = ['auto', 'sqrt']

max_depth = [int(x) for x in np.linspace(10, 110, num = 11)]
max_depth.append(None)

min_samples_split = [2, 5, 10]

min_samples_leaf = [1, 2, 4]

bootstrap = [True, False]

random_grid = {'n_estimators': n_estimators,
               'max_features': max_features,
               'max_depth': max_depth,
               'min_samples_split': min_samples_split,
               'min_samples_leaf': min_samples_leaf,
               'bootstrap': bootstrap}
pprint(random_grid)

运行上述代码后,我们得到以下输出,其中我们可以看到屏幕上创建了一个 scikit learn 超参数调整。

scikit learn random forest hyperparameter tunning

scikit learn random forest hyperparameter tunning

阅读: Scikit 学习准确度 _ 分数

Scikit 学习随机森林特征重要性

在本节中,我们将了解如何用 python 创建sci kit learn random forest feature importance

  • 特征重要性是描述整个过程的最佳方式。它描述了哪些特性是相关的,哪些是不相关的。
  • 它还有助于以更好的方式理解所解决的问题,并且有时通过使用特征选择来进行模型改进。

代码:

在下面的代码中,我们将导入一些用于创建随机森林的库,并借助特性重要性来描述特性。

  • classifier.predict([[3,3,2,2]]) 用于预测是哪种类型的花。
  • classifier = RandomForestClassifier(n _ estimators = 100)用于创建随机森林分类器。
  • classifier.fit(X_train,y_train) 用于训练集对模型进行训练。
  • feature_imp = pd。series(classifier . feature _ importances _,index=iris.feature_names)。sort _ values(ascending = False)使用特征重要性变量来描述模型的特征。
from sklearn import datasets 

iris = datasets.load_iris()  
print(iris.target_names)

print(iris.feature_names)
X, y = datasets.load_iris( return_X_y = True)

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

from sklearn.ensemble import RandomForestClassifier
import pandas as pd
data = pd.DataFrame({'sepallength' : iris.data[:,0],'sepalwidth' : iris.data[:,1], 'petallength' : iris.data[:,2], 'petalwidth' : iris.data[:,3],'species' : iris.target})
print(data.head())
classifier = RandomForestClassifier(n_estimators = 100) 

classifier.fit(X_train, y_train)

y_pred = classifier.predict(X_test)

from sklearn import metrics 
print()

print("Accuracy of the model: ", metrics.accuracy_score(y_test, y_pred))

classifier.predict([[3, 3, 2, 2]])

from sklearn.ensemble import RandomForestClassifier

classifier = RandomForestClassifier(n_estimators = 100)

classifier.fit(X_train, y_train)

import pandas as pd
feature_imp = pd.Series(classifier.feature_importances_, index = iris.feature_names).sort_values(ascending = False)
feature_imp

输出:

运行上面的代码后,我们得到了下面的输出,其中我们可以看到模型的特性是由特性重要性描述的。

scikit learn random forest feature importance

scikit learn random forest feature importance

阅读: Scikit 学习隐马尔可夫模型

Scikit 学习随机森林分类变量

在本节中,我们将了解如何让 scikit 学习随机森林分类变量。

  • 分类变量是指我们可以将变量分配到特定组的变量。
  • 分类变量只能取两个值作为二进制值,而二进制值只首选 0 和 1。

代码:

在下面的代码中,我们将导入熊猫作为 pd,并从中读取数据。

import pandas as pd
df = pd.read_csv('bank.csv')
df.head()

输出:

运行上面的代码后,我们得到下面的输出,我们可以看到数据集的前五行显示在屏幕上。

scikit learn random forest categorical variable data

scikit learn random forest categorical variable data

在下面的代码中,我们打印我们将变量分配给特定组的类别中的变量。

s = (df.dtypes == 'object')
object_cols = list(s[s].index)
print("Categorical variables:")
print(object_cols)

运行上面的代码后,我们得到下面的输出,其中我们可以看到分类变量的 object 列显示在屏幕上。

scikit learn random forest categorical variable object column

scikit learn random forest categorical variable object column

这里我们可以看到变量被分配给了一个特定的组。

features = df[['Sex','Housing','Saving accounts']]
features.head()

scikit learn random forest categorical variable

scikit learn random forest categorical variable

阅读: Scikit 学习功能选择

Scikit 学习随机森林交叉验证

在本节中,我们将学习 python 中的 scikit learn random forest 交叉验证

  • 交叉验证是用于评估模型的性能或准确性的过程。它还用于防止模型在预测模型中过度拟合。
  • 交叉验证我们可以对数据进行固定次数的折叠,并对数据进行分析。

Random forest cross validation

scikit-learn.org

阅读: Scikit 学习线性回归

Scikit 学习随机森林可视化

在这一节中,我们将学习如何让 scikit 学习 python 中的随机森林 虚拟化

  • 正如我们所知,随机森林在几个决策树上工作。绘制它们,看看模型如何预测目标变量的值。
  • 可视化是一个随机挑选 2 或 3 棵树的过程,它给模型一个很好的直觉。

代码:

在下面的代码中,我们将导入库,从中我们可以进行随机的森林可视化。

  • model = RandomForestClassifier(n _ estimators = 10)用于制作模型,也可以使用单决策树。
  • estimator = model . estimators _[5]用于提取单棵树。
  • 调用(['dot ','-Tpng ',' tree.dot ','-o ',' tree.png ','-Gdpi=600']) 用于使用系统命令转换成 png。
from sklearn.datasets import load_iris
iris = load_iris()

from sklearn.ensemble import RandomForestClassifier
model = RandomForestClassifier(n_estimators=10)

model.fit(iris.data, iris.target)

estimator = model.estimators_[5]

from sklearn.tree import export_graphviz

export_graphviz(estimator, out_file='tree.dot', 
                feature_names = iris.feature_names,
                class_names = iris.target_names,
                rounded = True, proportion = False, 
                precision = 2, filled = True)

from subprocess import call
call(['dot', '-Tpng', 'tree.dot', '-o', 'tree.png', '-Gdpi=600'])

from IPython.display import Image
Image(filename = 'tree.png')

输出:

运行上面的代码后,我们得到下面的输出,其中我们可以看到 scikit learn random forest 可视化是在屏幕上完成的。

scikit learn random forest visualization

scikit learn random forest visualization

您可能还想阅读以下 scikit 学习教程。

因此,在本教程中,我们讨论了 python 中的 Scikit learn random forest ,并且我们还涵盖了与其实现相关的不同示例。这是我们已经讨论过的例子列表。

  • Scikit 学习随机森林
  • Scikit 学习随机森林示例
  • Scikit 学习随机森林回归
  • scikit 学习随机森林超参数调整
  • Scikit 学习随机森林特征重要性
  • Scikit 学习随机森林分类变量
  • Scikit 学习随机森林交叉验证
  • Scikit 学习随机森林可视化

Bijay Kumar MVPBijay Kumar

Python 是美国最流行的语言之一。我从事 Python 工作已经有很长时间了,我在与 Tkinter、Pandas、NumPy、Turtle、Django、Matplotlib、Tensorflow、Scipy、Scikit-Learn 等各种库合作方面拥有专业知识。我有与美国、加拿大、英国、澳大利亚、新西兰等国家的各种客户合作的经验。查看我的个人资料。

enjoysharepoint.com/

Scikit 学习岭回归

原文:https://pythonguides.com/scikit-learn-ridge-regression/

Python & Machine Learning training courses

在这个 Python 教程中,我们将学习如何在 Python 中创建 scikit learn ridge regression ,我们还将涵盖与 ridge regression 相关的不同示例。我们将讨论这些话题。

  • Scikit 学习岭回归
  • Scikit 学习岭回归系数
  • Scikit 学习核岭回归
  • Scikit 学习贝叶斯岭回归

目录

Scikit 学岭回归

本节我们将学习如何解决 python 中的 Scikit 学习 岭回归

岭回归用于求解该回归模型,并通过添加一些等价于系数大小平方的惩罚来修改损失函数。

代码:

在下面的代码中,我们将导入一些库,从中我们可以用 python 求解岭回归。

  • n_samples,n_features = 15,10 用于在此岭函数中添加样本和特征。
  • RNG = NP . random . random state(0)用于随机状态。
  • rdg.fit(X,y) 用于拟合数值。
from sklearn.linear_model import Ridge
import numpy as np
n_samples, n_features = 15, 10
range = np.random.RandomState(0)
y = range.randn(n_samples)
X = range.randn(n_samples, n_features)
ridge = Ridge(alpha = 0.5)
ridge.fit(X, y)
ridge.score(X,y)

输出:

运行上面的代码后,我们得到下面的输出,其中我们可以看到屏幕上显示了岭回归得分。

Scikit learn Ridge Regression

Scikit learn Ridge Regression

另外,检查: Scikit-learn Vs Tensorflow

Scikit 学岭回归系数

在本节中,我们将了解如何用 python 创建 scikit learn 岭回归系数。

代码:

在下面的代码中,我们将从 sklearn.learn 中导入 ridge 库,还将导入 numpy 作为 np

  • n_samples,n_features = 15,10 用于在岭函数中添加样本和特征。
  • ridge.score(X,y) 用于给出得到分数的岭函数。
  • ridge.coef_ 用于获取岭函数的系数。
from sklearn.linear_model import Ridge
import numpy as np
n_samples, n_features = 15, 10
range = np.random.RandomState(0)
y = range.randn(n_samples)
X = range.randn(n_samples, n_features)
ridge = Ridge(alpha = 0.5)
ridge.fit(X, y)
ridge.score(X,y)
ridge.coef_

输出:

运行上面的代码后,我们得到下面的输出,其中我们可以看到脊系数打印在屏幕上。

scikit learn ridge regression coefficient

scikit learn ridge regression coefficient

阅读: Scikit-learn 逻辑回归

Scikit 学习内核岭回归

在这一节中,我们将学习如何用 Python 创建一个 scikit learn 内核脊回归

内核岭回归用自己的招数合并岭回归。核包括线性函数中的空间。

代码:

在下面的代码中,我们将从 sklearn.kernel_ridge 导入 KernelRidge,从中我们可以得到内核脊值。

  • n_samples,n_features = 10,5 用于创建样本和特征的核脊。
  • KernelRidge(alpha=1.0) 用于获取核脊值。
from sklearn.kernel_ridge import KernelRidge
import numpy as np
n_samples, n_features = 10, 5
range = np.random.RandomState(0)
y = rng.randn(n_samples)
X = rng.randn(n_samples, n_features)
kernel = KernelRidge(alpha=1.0)
kernel.fit(X, y)

输出:

运行上面的代码后,我们得到下面的输出,其中我们可以看到屏幕上显示了内核脊值。

scikit learn kernel ridge regression

scikit learn kernel ridge regression

阅读: Scikit 学习决策树

Scikit 学习贝叶斯岭回归

在这一节中,我们将学习如何用 Python 创建一个 scikit 学习贝叶斯岭回归。

贝叶斯回归允许自然机制通过使用概率公式化线性回归来保持不充分的分布数据。

代码:

在下面的代码中,我们将导入一些库,从中我们可以创建贝叶斯岭回归。

  • n_samples,n_features = 100,100 用于生成数据。
  • X = np.random.randn(n_samples,n_features) 用于创建高斯数据。
  • lambda_ = 4.0 用于创建带有 lambda 值的权重。
  • relevant _ features = NP . random . randint(0,n_features,10) 用于保持 10 个感兴趣的权重。
  • clf = Bayesian ridge(compute _ score = True)用于拟合贝叶斯回归。
  • plot.figure(figsize=(6,5)) 用于绘制图形。
 import numpy as np
import matplotlib.pyplot as plot
from scipy import stats

from sklearn.linear_model import BayesianRidge, LinearRegression
np.random.seed(0)
n_samples, n_features = 100, 100
X = np.random.randn(n_samples, n_features)  # Create Gaussian data
lambda_ = 4.0
w = np.zeros(n_features)
relevant_features = np.random.randint(0, n_features, 10)
for i in relevant_features:
    w[i] = stats.norm.rvs(loc=0, scale=1.0 / np.sqrt(lambda_)).
alpha_ = 50.0
noise = stats.norm.rvs(loc=0, scale=1.0 / np.sqrt(alpha_), size=n_samples)
y = np.dot(X, w) + noise

clf = BayesianRidge(compute_score=True)
clf.fit(X, y)

ols = LinearRegression()
ols.fit(X, y)

lw = 2
plot.figure(figsize=(6, 5))
plot.title("Weights of model")
plot.plot(clf.coef_, color="green", linewidth=lw, label="Bayesian Ridge estimate")
plot.plot(w, color="yellow", linewidth=lw, label="Ground truth")
plot.plot(ols.coef_, color="red", linestyle="--", label="OLS estimate")
plot.xlabel("Features")
plot.ylabel("Values of  weights")
plot.legend(loc="best", prop=dict(size=12))

plot.figure(figsize=(6, 5))
plot.title("Histogram of weights")
plot.hist(clf.coef_, bins=n_features, color="gold", log=True, edgecolor="black")
plot.scatter(
    clf.coef_[relevant_features],
    np.full(len(relevant_features), 5.0),
    color="navy",
    label="Relevant features",
)
plot.ylabel("Features")
plot.xlabel("Values of weights")
plot.legend(loc="upper left")

plot.figure(figsize=(6, 5))
plot.title("Marginal log-likelihood")
plot.plot(clf.scores_, color="navy", linewidth=lw)
plot.ylabel("Score")
plot.xlabel("Iterations")
def f(x, noise_amount):
    y = np.sqrt(x) * np.sin(x)
    noise = np.random.normal(0, 1, len(x))
    return y + noise_amount * noise

degree = 10
X = np.linspace(0, 10, 100)
y = f(X, noise_amount=0.1)
clf_poly = BayesianRidge()
clf_poly.fit(np.vander(X, degree), y)

X_plot = np.linspace(0, 11, 25)
y_plot = f(X_plot, noise_amount=0)
y_mean, y_std = clf_poly.predict(np.vander(X_plot, degree), return_std=True)
plot.figure(figsize=(6, 5))
plot.errorbar(
    X_plot,
    y_mean,
    y_std,
    color="navy",
    label="Polynomial Bayesian Ridge Regression",
    linewidth=lw,
)
plot.plot(X_plot, y_plot, color="yellow", linewidth=lw, label="Ground Truth")
plot.ylabel("Output y")
plot.xlabel("Feature X")
plot.legend(loc="lower left")
plot.show()

输出:

运行上面的代码后,我们得到下面的输出,其中我们可以看到贝叶斯岭回归被绘制在屏幕上。

scikit learn bayesian ridge regression

scikit learn Bayesian ridge regression

您可能还想阅读 scikit learn 上的以下教程。

因此,在本教程中,我们讨论了sci kit learn ridge regression,我们还涵盖了与其实现相关的不同示例。这是我们已经讨论过的例子列表。

  • Scikit 学习岭回归
  • Scikit 学习岭回归系数
  • Scikit 学习核岭回归
  • Scikit 学习贝叶斯岭回归

Bijay Kumar MVPBijay Kumar

Python 是美国最流行的语言之一。我从事 Python 工作已经有很长时间了,我在与 Tkinter、Pandas、NumPy、Turtle、Django、Matplotlib、Tensorflow、Scipy、Scikit-Learn 等各种库合作方面拥有专业知识。我有与美国、加拿大、英国、澳大利亚、新西兰等国家的各种客户合作的经验。查看我的个人资料。

enjoysharepoint.com/

Scikit 学习情绪分析

原文:https://pythonguides.com/scikit-learn-sentiment-analysis/

Python & Machine Learning training courses

在这个 Python 教程中,我们将学习Scikit learn 情绪分析如何在 Python 中工作,我们将涵盖与情绪分析相关的不同示例。此外,我们将涵盖这些主题。

  • Scikit 学习情绪分析
  • Scikit 学习情绪分类
  • Scikit 学习情绪逻辑回归

目录

Scikit 学习情绪分析

本节我们将学习如何 Scikit 学习python 中的情感分析作品

  • 情感分析被定义为自然语言处理的过程和最重要的部分。
  • 因为文本数据不能被算法处理。
  • 当文本数据被转换成数字数据时,它可以被算法直接处理。

代码:

在下面的代码中,我们将导入一些库,从中我们可以进行情感分析。

  • data = PD . read _ CSV(" test . CSV ")用于读取测试文件。
  • data.head() 用于打印数据集的前五行。
import pandas as pds
import numpy as num
import matplotlib.pyplot as plot
import seaborn as sb 
from sklearn.feature_extraction.text import CountVectorizer
count=CountVectorizer()
data=pd.read_csv("Test.csv")
data.head()

运行上面的代码后,我们得到了下面的输出,其中我们可以看到数据集的前五行。

scikit learn sentiment analysis count vectorizer

scikit learn sentiment analysis count vectorizer

data.shape 函数用于打印数据集的形状。

data.shape

scikit learn sentiment dataset shape

scikit learn sentiment dataset shape

  • fig=plt.figure(figsize=(5,5)) 是在屏幕上绘制图形。
  • clrs=["green ",' red'] 用来给图形颜色。
  • positive = data[data[' label ']= = 1]用于给图形加正标签。
  • 负数=data[data['label']==0] 用于给图形加负数标签。
  • piechart=plot.pie(cv,labels=["Positive "," Negative"],autopct ='%1.1f%% ',shadow = True,colors = clrs,startangle = 45,explode=(0,0.1)) 用于在绿色上绘制饼图。
  • dataframe=[“你好,主人,不要把世界扛在你的肩上,因为你知道,通过使他的世界变得更冷来装酷的人是傻瓜。
  • bag view = count . fit _ transform(data frame)用于将文本数据转换为数值数据。
  • print(count . get _ feature _ names())用于在屏幕上打印特征名称。
fig=plt.figure(figsize=(5,5))
clrs=["green",'red']
positive=data[data['label']==1]
negative=data[data['label']==0]
cv=[positive['label'].count(),negative['label'].count()]
piechart=plot.pie(cv,labels=["Positive","Negative"],
                 autopct ='%1.1f%%', 
                 shadow = True,
                 colors = clrs,
                 startangle = 45,
                 explode=(0, 0.1))
dataframe=["Hello master, Dont carry the world upon your shoulders for well you know that its a fool who plays it cool by making his world a little colder Na-na-na,a, na"]
bagview=count.fit_transform(dataframe)
print(count.get_feature_names())
print(bagview.toarray())

运行上面的代码后,我们得到了下面的输出,可以看到文本数据被转换成了数字数据。此外,还可以看到屏幕上显示的带有正面数据和负面数据的饼图。

scikit learn sentiment analysis

scikit learn sentiment analysis

阅读: Scikit 学习决策树

Scikit 学习情绪分类

在本节中,我们将了解scikit 如何在 python 中学习情感分类

  • Scikit learn 情感分类是一个自动捕捉文本丰硕状态的过程。
  • 情感分类分析是自然语言处理中的一个重要领域。
  • 它很容易分析,并广泛应用于客户评论。它还可以看到客户可以给出积极的评论或消极的评论。

代码:

在下面的代码中,我们将导入一些库,从中我们可以估计情感分类分析。

  • positive _ folder = f ' { folder }/pos '用于获取正面评论。
  • negative _ folder = f { folder }/neg '用于获取负面评论。
  • return :用于输入文件夹中所有文件的列表。
  • fld: 用作正面或负面评论文件夹。
  • 转正文件=获取转正文件(转正文件夹)用于获取转正审核文件夹。
  • 负面 _ 文件=获取 _ 文件(负面 _ 文件夹)用于获取负面评论文件夹。
  • *textfile = list(map(lambda txt:re sub((<br \ s /?> )+',' ',txt),text) 用于制动行空格用 break。
  • IMDB _ train = create _ data _ frame(' aclImdb/train ')用于导入列车数据帧。
  • IMDB _ test = create _ data _ frame(' aclImdb/test ')用于创建测试数据帧。
  • 从 joblib 导入转储,load 用于保存和加载 sklearn。
  • 从 scipy.sparse 导入 save_npz,load_npz 用于保存和加载稀疏矩阵。
  • unigram _ vector izers . fit(IMDB _ train[' text ']。【T1 值)】用于计数单字。
  • bigram _ vectorizers = count vectorizer(ngram _ range =(1,2)) 用于对 bigram 进行计数。
  • x _ train _ bigram _ TF _ IDF = bigram _ TF _ IDF _ transformer . transform(x _ train _ bigram)用于训练 biagran_tf_idf。
  • classifier.fit(x_train,y_train) 用于拟合分类器。
  • print(f“{ title } \ n 训练分数:{round(train_score,2)};验证分数:{round(valid_score,2)}\n') 用于打印标题。
  • train _ and _ show _ scores(x _ train _ unigrams,y_train,' Unigram Counts') 用于显示训练 Unigram 的得分。
  • train _ and _ show _ scores(x _ train _ bigram,y_train,' Bigram Counts') 用于显示训练 Bigram 的得分
import pandas as pds
import re
from os import system, listdir
from os.path import isfile, join
from random import shuffle

system('wget "http://ai.stanford.edu/~amaas/data/sentiment/aclImdb_v1.tar.gz"')
system('tar -xzf "aclImdb_v1.tar.gz"')

def create_data_frame(folder: str) -> pd.DataFrame:

    positive_folder = f'{folder}/pos' 
    negative_folder = f'{folder}/neg' 

    def get_files(fld: str) -> list:

        return [join(fld, f) for f in listdir(fld) if isfile(join(fld, f))]

    def append_files_data(data_list: list, files: list, label: int) -> None:
        for file_path in files:
            with open(file_path, 'r') as f:
                text = f.read()
                data_list.append((text, label))

    positive_files = get_files(positive_folder)
    negative_files = get_files(negative_folder)

    data_list = []
    append_files_data(data_list, positive_files, 1)
    append_files_data(data_list, negative_files, 0)
    shuffle(data_list)

    text, label = tuple(zip(*data_list))
    textfile = list(map(lambda txt: re.sub('(<br\s*/?>)+', ' ', txt), text))

    return pd.DataFrame({'text': text, 'label': label})

imdb_train = create_data_frame('aclImdb/train')
imdb_test = create_data_frame('aclImdb/test')

system("mkdir 'csv'")
imdb_train.to_csv('csv/imdb_train.csv', index=False)
imdb_test.to_csv('csv/imdb_test.csv', index=False)

from sklearn.feature_extraction.text import CountVectorizer, TfidfTransformer
from joblib import dump, load 
from scipy.sparse import save_npz, load_npz 

system("mkdir 'data_preprocessors'")
system("mkdir 'vectorized_data'")

unigram_v                     
unigram_vectorizers.fit(imdb_train['text'].values)

dump(unigram_vectorizers, 'data_preprocessors/unigram_vectorizer.joblib')

x_train_unigrams = unigram_vectorizers.transform(imdb_train['text'].values)

save_npz('vectorized_data/X_train_unigram.npz', x_train_unigrams)

**# Unigram Tf-Idf**

unigram_tf_idf_transformer = TfidfTransformer()
unigram_tf_idf_transformer.fit(x_train_unigrams)

dump(unigram_tf_idf_transformer, 'data_preprocessors/unigram_tf_idf_transformer.joblib') 
x_train_unigram_tf_idf = unigram_tf_idf_transformer.transform(x_train_unigrams)

save_npz('vectorized_data/x_train_unigram_tf_idf.npz', x_train_unigram_tf_idf) load_npz('vectorized_data/X_train_unigram_tf_idf.npz')

**# Bigram Counts**

bigram_vectorizers = CountVectorizer(ngram_range=(1, 2))
bigram_vectorizers.fit(imdb_train['text'].values)

dump(bigram_vectorizers, 'data_preprocessors/bigram_vectorizers.joblib')

x_train_bigram = bigram_vectorizers.transform(imdb_train['text'].values)

save_npz('vectorized_data/x_train_bigram.npz', x_train_bigram)

**# Bigram Tf-Idf**

bigram_tf_idf_transformer = TfidfTransformer()
bigram_tf_idf_transformer.fit(X_train_bigram)

dump(bigram_tf_idf_transformer, 'data_preprocessors/bigram_tf_idf_transformer.joblib')

x_train_bigram_tf_idf = bigram_tf_idf_transformer.transform(x_train_bigram)

save_npz('vectorized_data/x_train_bigram_tf_idf.npz', x_train_bigram_tf_idf)

from sklearn.linear_model import SGDClassifier
from sklearn.model_selection import train_test_split
from scipy.sparse import csr_matrix
import numpy as num

def train_and_show_scores(x: csr_matrix, y: np.array, title: str) -> None:
    x_train, x_valid, y_train, y_valid = train_test_split(
        x, y, train_size=0.75, stratify=y
    )

    classifier = SGDClassifier()
    classifier.fit(x_train, y_train)
    train_score = classifier.score(x_train, y_train)
    valid_score = classifier.score(x_valid, y_valid)
    print(f'{title}\nTrain score: {round(train_score, 2)} ; Validation score: {round(valid_score, 2)}\n')

y_train = imdb_train['label'].values

train_and_show_scores(x_train_unigrams, y_train, 'Unigram Counts')
train_and_show_scores(x_train_unigram_tf_idf, y_train, 'Unigram Tf-Idf')
train_and_show_scores(x_train_bigram, y_train, 'Bigram Counts')
train_and_show_scores(x_train_bigram_tf_idf, y_train, 'Bigram Tf-Idf') 

输出:

运行上述代码后,我们得到以下输出,其中我们可以看到屏幕上打印了 unigram counts、Unigram Tf-Idf、Bigram counts、Bigram Tf-Idf 的得分。

scikit learn sentiment classification analysis

scikit learn sentiment classification analysis

阅读: Scikit-learn 逻辑回归

Scikit 学习情绪逻辑回归

在本节中,我们将了解scikit 如何在 python 中学习情绪逻辑回归工作

  • 情感分析回归提到使用文本等数据来分析对某事物的感觉。
  • 如果公众对产品的评价不好,公司可以修改产品,这有助于公司做出决定。
  • 他们也可以停止生产那种给差评的产品,以避免损失。
  • 它很容易分析并广泛应用于人们的推文,它给出了积极或消极推文的评论。

代码:

在下面的代码中,我们将导入一个计数矢量器来将文本数据转换成数字数据。

  • data.append(i) 用于添加数据。
  • data labels . append(' positive ')用于添加正面推文标签。
  • data labels . append(' negative ')用于添加负面推文标签。
  • features = vectorizers . fit _ transform(data)用于拟合数据。
  • x_train,x_test,y_train,y _ test = train _ test _ split(features _ nd,datalabels,train_size=0.80,random_state=1234) 用于将数据集吐槽为训练数据和测试数据。
  • log reg _ model = log reg _ model . fit(X = X _ train,y=y_train) 用于将数据拟合到 logistic 回归模型中。
  • j = rand.randint(0,len(x_test)-7) 用于随机生成数据。
  • print(y_pred[0]) 用于打印预测。
  • 打印(数据[索引])。【strip())用于打印屏幕上的数据。
from sklearn.feature_extraction.text import CountVectorizer
data = []
datalabels = []
with open("positive_tweets.txt") as f:
    for i in f: 
        data.append(i) 
        datalabels.append('positive')

with open("negative_tweets.txt") as f:
    for i in f: 
        data.append(i)
        datalabels.append('negative')
vectorizers = CountVectorizer(
    analyzer = 'word',
    lowercase = False,
)
features = vectorizers.fit_transform(
    data
)
features_nd = features.toarray()
from sklearn.model_selection import train_test_split

x_train, x_test, y_train, y_test  = train_test_split(
        features_nd, 
        datalabels,
        train_size=0.80, 
        random_state=1234)
from sklearn.linear_model import LogisticRegression
logreg_model = LogisticRegression()
logreg_model = logreg_model.fit(X=x_train, y=y_train)
y_pred = logreg_model.predict(x_test)
import random as rand
j = rand.randint(0,len(x_test)-7)
for i in range(j,j+7):
    print(y_pred[0])
    index = features_nd.tolist().index(x_test[i].tolist())
    print(data[index].strip())

运行上面的代码后,我们得到下面的输出,其中我们可以看到所有的负数据和正数据都打印在屏幕上。

Scikit learn sentiment logistic regression

Scikit learn sentiment logistic regression

在这段代码中,我们将从 sklearn.metrics 导入 accuracy_score,通过它我们可以预测模型的准确性。

print(accuracy_score(y_test,y_pred)) 用于预测模型的精度。

from sklearn.metrics import accuracy_score
print(accuracy_score(y_test, y_pred))

运行上面的代码后,我们得到了下面的输出,其中我们可以看到模型的准确性被打印在屏幕上。

scikit learn sentiment logistic regression accuracy score

scikit learn sentiment logistic regression accuracy score

您可能还想阅读以下 Scikit 学习教程。

因此,在本教程中,我们学习了 Scikit learn 情绪分析,我们还介绍了与其实现相关的不同示例。这是我们已经讨论过的例子列表。

  • Scikit 学习情绪分析
  • Scikit 学习情绪分类
  • Scikit 学习情绪逻辑回归

Bijay Kumar MVPBijay Kumar

Python 是美国最流行的语言之一。我从事 Python 工作已经有很长时间了,我在与 Tkinter、Pandas、NumPy、Turtle、Django、Matplotlib、Tensorflow、Scipy、Scikit-Learn 等各种库合作方面拥有专业知识。我有与美国、加拿大、英国、澳大利亚、新西兰等国家的各种客户合作的经验。查看我的个人资料。

enjoysharepoint.com/

Scikit 学习分割数据

原文:https://pythonguides.com/scikit-learn-split-data/

Python & Machine Learning training courses

在这个 Python 教程中,我们将学习Scikit learn Split data 如何在 Python 中工作。我们还将介绍与 Scikit learn 分割数据相关的不同示例。此外,我们将涵盖这些主题。

  • Scikit 学习分割数据
  • Scikit 学习分离训练测试索引
  • Scikit 学习按组划分
  • Scikit 学习拆分 K 折叠
  • Scikit 学习分割数据策略
  • Scikit 学习分割时间序列
  • Scikit 学习分离训练测试值

如果您不熟悉 Scikit learn,我们建议您阅读什么是 Python 中的 Scikit Learn

目录

Scikit 学习分割数据

在本节中,我们将了解Scikit learn 如何在 python 中分割数据

Scikit learn split data frame 用于将数据拆分为训练和测试数据集 split() 函数用于拆分数据,它调用输入数据进行数据拆分。

代码:

在下面的代码中,我们导入了一些库,从中我们可以将数据帧分成训练和测试数据集。

  • x,y = num.arange(10)。reshape((5,2)),range(5) 用于排列数据。
  • array=() 用于定义数组。
  • list(y) 用于打印屏幕上的数据列表。
  • x_train,x_test,y_train,y_test = train_test_split(x,y,test_size=0.33,random_state=42) 用于将数据帧拆分为训练和测试数据集。
  • train_test_split(y,shuffle=False) 用于拆分数据。
import numpy as num
from sklearn.model_selection import train_test_split
x, y = num.arange(10).reshape((5, 2)), range(5)
x
array=([[1, 2],
       [3, 4],
       [5, 6],
       [7, 8],
       [9, 10]])
list(y)
x_train, x_test, y_train, y_test = train_test_split(
    x, y, test_size=0.33, random_state=42)

x_train
train_test_split(y, shuffle=False)

输出:

运行上面的代码后,我们得到下面的输出,其中我们可以看到数据帧被分成训练和测试数据集。

Scikit learn split data

Scikit learn split data

阅读: Scikit 学习图像处理

Scikit 学习分割列车测试指数

在本节中,我们将了解sci kit 如何学习分割训练测试 intext 在 python 中的工作方式

Scikit 学习分割列车测试索引用于将列车测试数据分割成列车测试索引,以找到列车测试分割。 split() 函数用于将数据分割成一个列车文本索引。

代码:

在下面的代码中,我们将导入一些库,从中我们可以拆分训练测试索引拆分。

  • x = num.array([[2,3],[4,5],[6,7],[8,9],[4,5],[6,7]]) 用于创建数组。
  • random shuffle = shuffles split(n _ splits = 5,test_size=.25,random_state=0) 用于拆分数据。
  • 对于 train_index,randomshuffle.split(x)中的 test _ index:用于将数据集拆分成训练测试索引。
  • 打印(" TRAIN:",train_index," TEST:",test_index) 用于打印列车测试指标数据。
import numpy as num
from sklearn.model_selection import ShuffleSplit
x = num.array([[2, 3], [4, 5], [6, 7], [8, 9], [4, 5], [6, 7]])
y = num.array([1, 2, 1, 2, 1, 2])
randomshuffle = ShuffleSplit(n_splits=5, test_size=.25, random_state=0)
randomshuffle.get_n_splits(x)
print(randomshuffle)
for train_index, test_index in randomshuffle.split(x):
       print("TRAIN:", train_index, "TEST:", test_index)

输出:

运行上面的代码后,我们得到下面的输出,其中我们可以看到数据分为训练和测试索引两部分。

scikit learn split train test index

scikit learn split train test index

阅读: Scikit 学习非线性

Scikit 按组学习拆分

在本节中,我们将了解Scikit learn split by group 如何在 python 中工作

  • Scikit learn split group by 用于分割数据并将数据分组。
  • 我们可以使用 train_test_split() 函数,从中我们可以将数据分成训练集和测试集。

代码:

在下面的代码中,我们导入了一些库,从中我们可以按组分割数据。

  • iris = load_iris() 用于加载虹膜数据。
  • x = iris.data 用于导入 x 的值。
  • x_train,x_test,y_train,y_test = train_test_split(x,y,test_size = 0.6) 用于将数据拆分为训练和测试数据集。
  • print(Counter(y_train)) 用于打印 y 列车组的值。
  • 打印(Counter(y_test)) 用于打印 y 测试组的数据。
from collections import Counter
import numpy as num

from sklearn.datasets import load_iris

from sklearn.model_selection import train_test_split

iris = load_iris()

x = iris.data
y = iris.target

x_train, x_test, y_train, y_test = train_test_split(x, y, test_size = 0.6)

print(Counter(y_train))

print(Counter(y_test))

输出:

在下面的输出中,我们可以看到 y 训练组数据和 y 测试组数据被打印在屏幕上。

Scikit learn split by group

Scikit learn split by group

阅读: Scikit 学习 KNN 教程

Scikit 学习分割 k 线折叠

在这一节中,我们将了解Scikit 如何在 python 中学习 split Kfold 的工作方式

  • Scikit learn split Kfold 用于将数据默认拆分为 K 个连续的折叠,而不会被数据打乱。
  • 借助于 train_test_split() 方法,数据集被分成两部分训练数据和测试数据。

代码:

在下面的代码中,我们将导入一些库,从中我们可以将数据集分成 K 个连续的折叠。

  • num.random.seed(1338) 用于生成随机数。
  • n_splits = 6 用于将数据分割成六部分。
  • percentiles_classes = [0.1,0.3,0.6] 用于生成分组数据。
  • group = num . h stack([[ii] 10 for ii in range(10)])*用于平均分割组。
  • 图,axis = plot.subplots() 用于绘制图。
  • axis.set() 用于设置屏幕上的轴。
from sklearn.model_selection import (
    TimeSeriesSplit,
    KFold,
    ShuffleSplit,
    StratifiedKFold,
    GroupShuffleSplit,
    GroupKFold,
    StratifiedShuffleSplit,
    StratifiedGroupKFold,
)
import numpy as num
import matplotlib.pyplot as plot
from matplotlib.patches import Patch

num.random.seed(1338)
cmap_data = plot.cm.Paired
cmap_cv = plot.cm.coolwarm
n_splits = 6

n_points = 100
x = num.random.randn(100, 10)

percentiles_classes = [0.1, 0.3, 0.6]
y = num.hstack([[ii] * int(100 * perc) for ii, perc in enumerate(percentiles_classes)])

group = num.hstack([[ii] * 10 for ii in range(10)])

def visualizegroup(classes, group, name):

    figure, axis = plot.subplots()
    axis.scatter(
        range(len(group)),
        [0.5] * len(group),
        c=group,
        marker="_",
        lw=60,
        cmap=cmap_data,
    )
    axis.scatter(
        range(len(group)),
        [3.5] * len(group),
        c=classes,
        marker="_",
        lw=60,
        cmap=cmap_data,
    )
    axis.set(
        ylim=[-1, 5],
        yticks=[0.5, 3.5],
        yticklabels=["Data\ngroup", "Data\nclass"],
        xlabel="Sample index",
    )

visualizegroup(y, group, "no groups")

输出:

在下面的输出中,我们可以看到,默认情况下,数据集被分割成 K 个连续的文件夹,没有任何数据混排。

Scikit learn split K fold

Scikit learn split K fold

阅读: Scikit 学习情绪分析

Scikit 学习分割数据策略

在本节中,我们将了解Scikit 如何学习 python 中的分割数据策略

  • Scikit learn 拆分数据策略用于将数据集拆分为训练数据和测试数据。
  • 训练数据用于将数据拟合到模型中,测试数据用于评估拟合数据。
  • 我们可以借助 train_test_split() 方法拆分训练和测试数据。

代码:

在下面的代码中,我们将导入一些库,从中我们可以拆分数据策略。

  • range = num . random . random state(0)用于生成随机数。
  • y = range . poisson(lam = NP . exp(x[:,5]) / 2) 用于与多个零相关的正整数目标。
  • x_train,x_test,y_train,y_test = train_test_split(x,y,random_state=range) 用于将数据拆分为训练和测试数据。
  • glm.fit(x_train,y_train) 用于拟合数据。
  • 打印(glm.score(x_test,y_test)) 用于打印分数。
  • num proc = make _ pipeline(simple imputr(strategy = " median "),StandardScaler()) 用于从数据集制作管道。
  • gbdt _ no _ CST = histgradientsboostingregressor()。fit(x,y) 用于拟合 histgradient boosting 回归模型。
  • display = plot _ partial _ dependency()用于在图形上绘制数据。
  • display.axes_[0,0]。plot() 用于在屏幕上显示坐标轴。
import numpy as num
from sklearn.model_selection import train_test_split
from sklearn.linear_model import PoissonRegressor
from sklearn.ensemble import HistGradientBoostingRegressor

nsamples, nfeatures = 1000, 20
range = num.random.RandomState(0)
x = range.randn(nsamples, nfeatures)

y = range.poisson(lam=np.exp(x[:, 5]) / 2)
x_train, x_test, y_train, y_test = train_test_split(x, y, random_state=range)
glm = PoissonRegressor()
gbdt = HistGradientBoostingRegressor(loss="poisson", learning_rate=0.01)
glm.fit(x_train, y_train)
gbdt.fit(x_train, y_train)
print(glm.score(x_test, y_test))
print(gbdt.score(x_test, y_test))
from sklearn import set_config
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import OneHotEncoder, StandardScaler
from sklearn.impute import SimpleImputer
from sklearn.compose import make_column_transformer
from sklearn.linear_model import LogisticRegression

set_config(display="diagram")

numproc = make_pipeline(SimpleImputer(strategy="median"), StandardScaler())

catproc = make_pipeline(
    SimpleImputer(strategy="constant", fill_value="missing"),
    OneHotEncoder(handle_unknown="ignore"),
)

preprocessor = make_column_transformer(
    (numproc, ("feat1", "feat3")), (catproc, ("feat0", "feat2"))
)

classifier = make_pipeline(preprocessor, LogisticRegression())
classifier
import scipy
import numpy as num
from sklearn.model_selection import train_test_split
from sklearn.cluster import KMeans
from sklearn.datasets import make_blobs
from sklearn.metrics import completeness_score

range = num.random.RandomState(0)
x, y = make_blobs(random_state=range)
x = scipy.sparse.csr_matrix(x)
x_train, x_test, _, y_test = train_test_split(x, y, random_state=range)
kmeans = KMeans(algorithm="elkan").fit(x_train)
print(completeness_score(kmeans.predict(x_test), y_test))
import numpy as num
from matplotlib import pyplot as plot
from sklearn.model_selection import train_test_split
from sklearn.inspection import plot_partial_dependence
from sklearn.ensemble import HistGradientBoostingRegressor

nsamples = 500
range = num.random.RandomState(0)
x = range.randn(nsamples, 2)
noise = range.normal(loc=0.0, scale=0.01, size=nsamples)
y = 5 * x[:, 0] + num.sin(10 * num.pi * x[:, 0]) - noise

gbdt_no_cst = HistGradientBoostingRegressor().fit(x, y)
gbdt_cst = HistGradientBoostingRegressor(monotonic_cst=[1, 0]).fit(x, y)

display = plot_partial_dependence(
    gbdt_no_cst,
    x,
    features=[0],
    feature_names=["feature 0"],
    line_kw={"linewidth": 4, "label": "unconstrained", "color": "tab:red"},
)
plot_partial_dependence(
    gbdt_cst,
    x,
    features=[0],
    line_kw={"linewidth": 4, "label": "constrained", "color": "tab:cyan"},
    ax=display.axes_,
)
display.axes_[0, 0].plot(
    x[:, 0], y, "o", alpha=0.5, zorder=-1, label="samples", color="tab:orange"
)
display.axes_[0, 0].set_ylim(-3, 3)
display.axes_[0, 0].set_xlim(-1, 1)
plot.legend()
plot.show()

输出:

运行上面的代码后,我们得到下面的输出,我们可以看到数据集是用他们的数据策略分割的。

Scikit learn split data strategy

Scikit learn split data strategy

阅读: Scikit 学习梯度下降

Scikit 学习分割时间序列

在这一节中,我们将了解Scikit learn split time series 如何在 python 中工作

Scikit 学习分割时间序列用于训练和测试数据,以固定的时间间隔分割时间。

代码:

在下面的代码中,我们将导入一些库,从中我们可以拆分时间序列数据。

  • 图,axis = plot.subplots(figsize=(14,6)) 用于绘制图。
  • average week _ demand = data frame . group by([" weekday "," hour"])。mean()["count"] 用于统计平均周需求。
  • average week _ demand . plot(ax = axis)= axis . set()用于在图形上绘制坐标轴。
  • time series _ cv = timeseries split()用于拆分时间序列数据。
  • X.iloc[test_0] 用于按位置选择数据。
from sklearn.datasets import fetch_openml

bikesharing = fetch_openml("Bike_Sharing_Demand", version=2, as_frame=True)
dataframe = bikesharing.frame
import matplotlib.pyplot as plot

figure, axis = plot.subplots(figsize=(14, 6))
averageweek_demand = dataframe.groupby(["weekday", "hour"]).mean()["count"]
averageweek_demand.plot(ax=axis)
_ = axis.set(
    title="Average Bike Demand During the week",
    xticks=[i * 24 for i in range(7)],
    xticklabels=["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
    xlabel="Time of the week",
    ylabel="Number of bike rentals",
)
y = dataframe["count"] / dataframe["count"].max()
figure, axis = plot.subplots(figsize=(14, 6))
y.hist(bins=30, ax=axis)
_ = axis.set(
    xlabel="Fraction of rented fleet demand",
    ylabel="Number of hours",
)
x = dataframe.drop("count", axis="columns")
x
from sklearn.model_selection import TimeSeriesSplit

timeseries_cv = TimeSeriesSplit(
    n_splits=7,
    gap=48,
    max_train_size=10000,
    test_size=1000,
)
allsplits = list(timeseries_cv.split(x, y))
train_0, test_0 = allsplits[0]
X.iloc[test_0]

输出:

运行上面的代码后,我们得到了下面的输出,其中我们可以看到数据分割时间序列是在屏幕上完成的。

Scikit learn split time series

Scikit learn split time series

阅读: Scikit 学习遗传算法

Scikit 学习分割列车测试值

在本节中,我们将学习Scikit 如何在 python 中学习 slit train test Val 的工作方式

  • Scikit learn 分割训练测试 val 用于将数据集分割为训练和测试数据,并获取训练测试分割数据的值。
  • 训练数据用于将数据拟合到模型中,测试数据用于评估拟合数据。

代码:

在下面的代码中,我们将导入一些库,从中我们可以拆分 train test val。

  • x_train,x_test,y_train,y _ test= train _ test _ split(x,y,random_state=0) 用于将数据集拆分成训练测试数据。
  • figure,axis = plot.subplots() 用于在图形上绘制图形或坐标轴。
  • axis.set_xlabel("有效 Alpha") 用于在图形上绘制 x 标签。
  • axis.set_title("总杂质与训练集的有效α")用于在屏幕上绘制标题。
import matplotlib.pyplot as plot
from sklearn.model_selection import train_test_split
from sklearn.datasets import load_breast_cancer
from sklearn.tree import DecisionTreeClassifier
x, y = load_breast_cancer(return_X_y=True)
x_train, x_test, y_train, y_test = train_test_split(x, y, random_state=0)

classifier = DecisionTreeClassifier(random_state=0)
path = classifier.cost_complexity_pruning_path(x_train, y_train)
ccpalphas, impurities = path.ccp_alphas, path.impurities
figure, axis = plot.subplots()
axis.plot(ccpalphas[:-2], impurities[:-2], marker="o", drawstyle="steps-post")
axis.set_xlabel("Effective Alpha")
axis.set_ylabel("Total Impurity Of Leaves")
axis.set_title("Total Impurity vs effective alpha for training set")

输出:

运行上面的代码后,我们得到下面的输出,其中我们可以看到屏幕上绘制的图形,还可以得到分割训练测试值。

Scikit learn split train test val

Scikit learn split train test val

您可能还想阅读以下 Scikit 学习教程。

因此,在本教程中,我们讨论了 Scikit learn Split data ,我们还讨论了与其实现相关的不同示例。这是我们已经讨论过的例子列表。

  • Scikit 学习分割数据
  • Scikit 学习分离训练测试索引
  • Scikit 学习按组划分
  • Scikit 学习拆分 K 折叠
  • Scikit 学习分割数据策略
  • Scikit 学习分割时间序列
  • Scikit 学习分离训练测试值

Bijay Kumar MVPBijay Kumar

Python 是美国最流行的语言之一。我从事 Python 工作已经有很长时间了,我在与 Tkinter、Pandas、NumPy、Turtle、Django、Matplotlib、Tensorflow、Scipy、Scikit-Learn 等各种库合作方面拥有专业知识。我有与美国、加拿大、英国、澳大利亚、新西兰等国家的各种客户合作的经验。查看我的个人资料。

enjoysharepoint.com/

Scikit-learn 与 tensor flow–详细对比

原文:https://pythonguides.com/scikit-learn-vs-tensorflow/

Python & Machine Learning training courses

在本 Python 教程中,我们将了解 scikit-learn vs Tensorflow ,还将涵盖 Python 中与 scikit-learn 和 TensorFlow 相关的不同示例。我们将讨论这些话题。

  • scikit-learn 如何工作
  • 张量流如何工作
  • Scikit-learn Vs Tensorflow

Scikit-learn Vs Tensorflow

Scikit-learn Vs Tensorflow

目录

scikit-learn 的工作原理

在本节中,我们将通过使用 python 中的 scikit-library 来了解 scikit-learn 的工作原理。

  • Scikit learn 是一个用户友好的、开源的、免费的 python 库。
  • 用户可以自由地使用这个库,这可以简化在 python 中应用编码的任务。
  • scikit learn 是用 python 编写,构建在 Scipy、Numpy 和 Matplotlib 之上。它只关注数据建模,而不是加载或操作数据。

scikit 学习的安装

pip install scikit-learn

语法:

from sklearn import datasets

sci kit-learn 示例:

在本例中,我们将了解 scikit 如何学习库工作,以及它如何关注建模数据。

  • plt.figure(figsize=(16,16)) 用于在屏幕上绘制图形。
  • X,y = make _ blob(n _ samples = n _ samples,random_state=random_state) 发出以生成可以存储二进制数据的 blob。
  • y_pred = KMeans(n_clusters=4,random_state=random_state)。fit_predict(X) 用于预测不正确的聚类数。
  • plt.subplot(224) 用于绘制支线剧情。
  • X_varied,y _ varied = make _ blobs(n _ samples = n _ samples,cluster_std=[1.0,2.5,0.5],random_state=random_state ) 用于制作不同的方差。
  • X _ filtered = NP . v stack((X[y = = 0][:500],X[y == 1][:100],X[y = = 2][:10])用于制作大小不均匀的块。
import numpy as np
import matplotlib.pyplot as plt

from sklearn.cluster import KMeans
from sklearn.datasets import make_blobs

plt.figure(figsize=(16, 16))

n_samples = 1800
random_state = 200
X, y = make_blobs(n_samples=n_samples, random_state=random_state)

y_pred = KMeans(n_clusters=4, random_state=random_state).fit_predict(X)

plt.subplot(224)
plt.scatter(X[:, 0], X[:, 1], c=y_pred)
plt.title(" Total incorrect number of blobs")

transformations = [[0.60834550, -0.63667344], [-0.40887720, 0.85253230]]
X_aniso = np.dot(X, transformation)
y_pred = KMeans(n_clusters=5, random_state=random_state).fit_predict(X_aniso)

plt.subplot(222)
plt.scatter(X_aniso[:, 0], X_aniso[:, 1], c=y_pred)
plt.title("Total nnumber of Anisotropicly Distributed Blobs")

X_varied, y_varied = make_blobs(
    n_samples=n_samples, cluster_std=[1.0, 2.5, 0.5], random_state=random_state
)
y_pred = KMeans(n_clusters=3, random_state=random_state).fit_predict(X_varied)

plt.subplot(223)
plt.scatter(X_varied[:, 0], X_varied[:, 1], c=y_pred)
plt.title("Total number of Unequal Variance")

X_filtered = np.vstack((X[y == 0][:500], X[y == 1][:100], X[y == 2][:10]))
y_pred = KMeans(n_clusters=3, random_state=random_state).fit_predict(X_filtered)

plt.subplot(224)
plt.scatter(X_filtered[:, 0], X_filtered[:, 1], c=y_pred)
plt.title("Total number of Unevenly Sized Blobs")

plt.show()

输出:

运行上面的代码后,我们得到下面的输出,其中我们可以看到在 scikit-learn 库的帮助下,不同的 K 均值聚类被绘制在屏幕上。

scikit learn example

scikit learn example

另外,检查: Scikit-learn 逻辑回归

【Tenserflow 如何工作

在本节中,我们将通过使用 python 中的 TensorFlow 库来了解 Tensorflow 的工作原理。

  • TensorFlow 是一个由 Google 团队设计的库,它使记录者的工作变得更加容易。
  • 它可以简单方便地计算出数学表达式。
  • Tensorflow 涉及深度学习和机器学习技术的编程支持。
  • Tensorflow 可以训练用于手写数字分类的深度神经网络,并创建各种序列模型。
  • Tensorflow 具有增强相同内存和数据使用的独特功能。

安装张量流:

pip install tensorflow

导入张量流的语法:

import tensorflow as tf

张量流示例:

在下面的例子中,我们将通过 TensorFlow 了解模型的准确性。

  • 正如我们所知,它结合了最优化技术的代数运算,使得任何数学计算都变得容易。
  • models = TF . keras . models . sequential()用于检查模型的准确性。
  • models.compile() 用于模型的编译。
  • models.fit(x_train,y_train,epochs=8) 用于拟合模型。
  • models.evaluate(x_test,y_test) 用于评估整个模型。
import tensorflow as tf
mnist = tf.keras.datasets.mnist

(x_train, y_train),(x_test, y_test) = mnist.load_data()
x_train, x_test = x_train / 260.0, x_test / 260.0

models = tf.keras.models.Sequential([
  tf.keras.layers.Flatten(input_shape=(28, 28)),
  tf.keras.layers.Dense(128, activation='relu'),
  tf.keras.layers.Dropout(0.2),
  tf.keras.layers.Dense(10, activation='softmax')
])

models.compile(optimizer='adam',
              loss='sparse_categorical_crossentropy',
              metrics=['accuracy'])

models.fit(x_train, y_train, epochs=8)
models.evaluate(x_test, y_test)

输出:

运行上述代码后,我们得到以下输出,从中我们可以看到,通过 TensorFlow,我们可以更轻松地进行数学计算,并获得准确的数据。

Example of Tensorflow

Example of Tensorflow

另外,请阅读: Scikit 学习决策树

Scikit-learn Vs Tensorflow

| Scikit -learn | Tensorflow |
| 1.scikit-learn 用于帮助开发人员进行设计,也用于创建新模型并对其进行基准测试。 | 1.Tensorflow 还用于帮助开发人员进行设计,并用于创建新模型的基准。 |
| 2.scikit-learn 在实践中用于广泛的模型范围。 | 2.神经网络的张量流间接使用。 |
| 3.scikit-learn 将其所有算法用作基本估计器 | 3.Tensorflow appliance 的所有算法都在基类中。 |
| 4.scikit-learn 与 XGBoost 等其他框架相比更加灵活 | 4.张量流是用神经网络优化的。 |
| 5.scikit-learn 没有实现一个准系统神经网络模型 | 5.Tensorflow 实现了一个准系统神经网络模型。 |
| 6.scikit-learn 是一个实现机器学习算法的高级库。 | 6.Tensorflow 是一个低级库,它也实现了机器级算法。 |
| 7.scikit-learn 有助于比较完全不同类型的机器学习模型。 | 7.它使其特殊化的引擎盖下优化,这使得比较张量流和神经网络模型更容易。 |
| 8.Scikit-learn 主要用于机器学习 | 8.TensorFlow 主要用于深度学习。 |
| 9.Scikit-learn 是第三方模块,但不如 TensorFlow 受欢迎。 | 9.它也是第三方模块,但更受欢迎。 |

scikit-learn Vs Tensorflow

此外,您可能喜欢:

因此,在本教程中,我们讨论了 scikit-learn Vs Tensorflow ,并且我们还讨论了与其实现相关的不同示例。这是我们已经讨论过的例子列表。

  • scikit-learn 如何工作
  • 张量流如何工作
  • Scikit-learn Vs Tensorflow

Bijay Kumar MVPBijay Kumar

Python 是美国最流行的语言之一。我从事 Python 工作已经有很长时间了,我在与 Tkinter、Pandas、NumPy、Turtle、Django、Matplotlib、Tensorflow、Scipy、Scikit-Learn 等各种库合作方面拥有专业知识。我有与美国、加拿大、英国、澳大利亚、新西兰等国家的各种客户合作的经验。查看我的个人资料。

enjoysharepoint.com/

Python Scipy 置信区间[9 个有用的例子]

原文:https://pythonguides.com/scipy-confidence-interval/

Python & Machine Learning training courses

在本 Python 教程中,我们将学习“ Python Scipy 置信区间”,以及与其使用相关的某些示例。此外,我们将讨论以下主题。

  • Python Scipy 置信区间
  • Python Scipy 置信区间 T 检验
  • Python Scipy 置信区间均值
  • Python Scipy 置信区间比例
  • Python Scipy 置信区间 T 分布
  • Python 科学置信区间二项式
  • Python Scipy 置信区间线性回归
  • Python Scipy 置信区间差
  • Python Scipy 置信区间示例

目录

Python Scipy 置信区间

一个置信区间 (CI)是一组被期望包含一个具有高度确定性的总体值的值。当总体均值落在两个区间之间时,通常用百分比表示。

抽样过程中不确定性或确定性的程度由置信区间来衡量。他们可以使用任意数量的置信度,95%或 99%的置信度是最普遍的。t 检验等统计工具用于计算置信区间。

例如,研究人员可以从同一总体中随机选择不同的样本,并计算每个样本的置信区间,以确定它在多大程度上代表了总体变量的真实值。出现的数据集都是唯一的,一些区间包含真实的总体参数,而另一些不包含。

但是“95%或者 99%的置信区间意味着什么?”95%或 99%置信区间是一组数字,在这个区间内你可能有 95%或 99%的把握,真实的总体均值是包含在内的。

如果多次使用抽样技术,大约 95%的区间可以获得真实的总体平均值。

阅读: Python Scipy 卡方测试

Python Scipy 置信区间 T 检验

t 检验是比较两组平均值的统计检验。它经常被用于假设检验,以观察一种方法或治疗是否对感兴趣的人群有影响,或者两个群体是否彼此不同。

Python Scipy 有四种不同的方法*ttest_1samp()**ttest_ind()**ttest_ind_from_stats()**ttest_rel()*

  • ttest_1samp() :计算一组分数平均值的 T 检验。
  • ttest_ind() :计算两个独立分数样本的 T 检验。
  • ttest_ind_from_stats() :来自描述统计学,对两个独立样本的均值进行 T 检验。
  • ttest_rel() :计算两个相关分数样本 a 和 b 的 t 检验。

这里我们将学习唯一的方法*ttest_1samp()*,要了解其余方法,请访问 Python SciPY 的官网。

下面给出了该方法的语法。

scipy.stats.ttest_1samp(a,axis=0, popmean, nan_policy='propagate', alternative='one-sided')

其中参数为:

  • a(数组 _ 数据): 观察样本。
  • 轴(int): 测试将沿此轴计算;默认值为 0。如果没有,则对整个数组 a 执行计算。
  • 【pop mean():在零假设下,这是期望值。如果是 array_data,它应该有精确的形状,减去轴的维度。
  • 备择: 备择假设在此定义。有多种选择,如双面、较小和较大。
  • nan_policy: 当输入包含 nan 时,该属性指定如何处理。有几个选项可用,默认为“propagate”:
  1. ' propagate ':这是一个返回 nan 的选项。
  2. ' raise ':它会导致引发错误。
  3. '省略':它在执行计算时忽略 nan 值。

让我们以下面的步骤为例:

使用下面的 python 代码导入所需的库或方法。

import numpy as np
from scipy.stats import ttest_1samp

首先,我们将使用下面的代码创建一个数组来保存 12 个工厂的测量值。

samp_data = [11, 11, 13, 10, 9, 14, 12, 11, 12, 10, 12, 11]

使用方法 ttest_1samp() 执行单样本测试,如以下代码所示。

ttest_1samp(a=samp_data, popmean=14)

Python Scipy Confidence Interval T Test

Python Scipy Confidence Interval T-Test

t 检验统计量的双侧 p 值为 3.2025,t 检验统计量为 6.7393。

对于这个单样本 t 检验,以下是两个假设:

  • H0(无效假设):这种植物的平均高度是 14 英寸
  • H1(另一个假设):平均身高不是 14 英寸。( ≠14)

这里 p 值大于 0.5,所以我们拒绝零假设,接受备择假设。

阅读: Python Scipy FFT

Python Scipy 置信区间均值

均值的置信区间是一组值,在特定的置信水平下,这些值可能包括总体均值。

置信区间的公式如下所示。

Confidence interval

Confidence interval

其中参数为:

x̅: 代表样本均值。
t: 置信度对应的 t 值。
s: 样本的标准差。
n: 样本数。

如果我们有一个小样本,比如少于 30 个,我们可以使用*scipy.stats* Python 库的*t.interval()*函数构建一个总体均值的置信区间。

让我们通过下面的步骤来了解一个示例:

使用下面的 python 代码导入所需的库。

from scipy import stats
import numpy as np

使用下面的代码创建示例数据。

samp_data = [15, 15, 15, 15, 14, 17, 18, 21, 22, 24, 26, 29, 29, 30, 25]

使用下面的代码创建 99%的置信区间。

stats.t.interval(alpha=0.95, loc=np.mean(samp_data), df=len(samp_data)-1, scale=stats.sem(samp_data)) 

Python Scipy Confidence Interval Mean

Python Scipy Confidence Interval Mean

真实总体均值的 95%置信区间为(17.764,24.235)。

阅读: Python Scipy Matrix +示例

Python Scipy 置信区间比例

Python Scipy 在模块*scipy.stats._result_classes*中包含了一个方法*BinomTestResult.proportion_ci()*,用于确定估计比例的置信区间。

下面给出了语法。

BinomTestResult.proportion_ci(confidence_level=0.99, method='wilson')

其中参数为:

  • confidence_level(float): 估计比例的计算置信区间的置信水平。默认值为 0.95。
  • 方法:选择计算比例估计置信区间的方法:
  1. “精确”:应该使用 Clopper-Pearson 精确方法。
  2. '威尔逊':威尔逊的方法没有连续性校正被称为'威尔逊'
  3. 威尔逊的技术包括连续性校正。

方法*BinomTestResult.proportion_ci()*返回 ci(置信区间的上下界存储在对象的高低属性中)

阅读:Scipy Linalg–实用指南

Python Scipy 置信区间二项式

二项式分布是一种概率分布,表示在给定一组因素或假设的情况下,某个值取两个独立值之一的可能性。在本节中,我们将使用二项式分布来计算置信区间。

Python Scipy 模块*scipy.stats*包含一个方法*binom.interval()*,使用这个方法我们将计算 CI。让我们按照以下步骤来看一个例子:

使用下面的 python 代码导入所需的库。

from scipy import stats
import numpy as np

使用下面的代码创建示例数据。

samp_data = [2,5,3,7,9,5,7,2,6,7]

使用下面的代码计算置信区间。

stats.binom.interval(alpha=0.99,
              n=len(samp_data)-1,
              loc=np.mean(samp_data), 
              p=stats.sem(samp_data))

Python Scipy Confidence Interval Binomial

Python Scipy Confidence Interval Binomial

这就是如何计算二项分布的置信区间。

阅读: Scipy 正态分布

Python Scipy 置信区间 T 分布

当总体标准差未知且数据来自正态分布总体时,t 分布表征样本均值和总体均值之间的归一化距离。

  • 换句话说,t 分布也称为学生 t 分布,是一组类似于正态分布曲线但略短且略粗的分布。
  • 当样本很少时,使用 t 分布,而不是正态分布。t 分布更像正态分布,更像样本量的增加。
  • 实际上,对于大于 20 的样本量,该分布几乎与正态分布相同。

下面是正态和 t 分布形状的给定图片。

T distribution

Scipy Confidence Interval T Distribution

我们已经做过与 t 分布相关的例子,请参考本教程的“Python Scipy 置信区间均值” 小节。

阅读: Scipy Ndimage Rotate

Python Scipy 置信区间线性回归

Python Scipy 模块*scipy.stats*包含一个方法*linregress()*,该方法用于两组测量,以执行线性最小二乘回归。这里我们将计算两个变量 x 和 y 之间的线性回归,然后求出所计算的线性回归的斜率和截距的置信区间。

下面给出了语法。

scipy.stats.linregress(x, y=None, alternative='less')

其中参数为:

  • x,y(array_data): 有两个测量集。两个数组的长度应该相同。如果只指定了 x(并且 y=None),则数组必须是二维的,其中一个维度的长度为 2。
  • 备择:备择假设在这里定义。有多种选择,如双面、较小和较大。

方法*linregress()*返回类型 float 的*slope**intercept**rvalue**pvalue**stderr**intercept_err*

让我们按照以下步骤通过一个示例来理解:

使用下面的 python 代码导入所需的库。

import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import linregress, t

使用下面的代码创建一个随机数生成器并生成 x 和 y 数据。

rand_numgen = np.random.default_rng()
x_data =rand_numgen.random(15)
y_data = 1.5*x_data + rand_numgen.random(15)

使用下面的代码计算线性回归。

lin_res = linregress(x_data, y_data)

使用下面的代码打印斜率和截距。

print("Slope",lin_res.slope)
print("Intercept",lin_res.intercept)

使用下面的代码将数据和拟合线一起绘制在图表上。

plt.plot(x_data, y_data, 'o', label='original data')
plt.plot(x_data, lin_res.intercept + lin_res.slope*x_data, 'r', label='fitted line')
plt.legend()
plt.show()

Python Scipy Confidence Interval Linear Regression

Python Scipy Confidence Interval Linear Regression

使用以下代码计算斜率和截距的 95%置信区间。

t_inv = lambda prob, degree_of_freedom: abs(t.ppf(prob/2, degree_of_freedom))

使用下面的代码打印斜率和截距的置信区间。

阅读: Scipy Integrate +示例

Python Scipy 置信区间差

假设我们有来自配对实验的两组数据,它们并不相互独立,我们希望为两个样本之间的平均差异建立一个置信区间。计算置信区间的程序是什么?假设我们决定置信水平为 0.05。

使用下面的 python 代码导入所需的库。

from scipy import stats
import numpy as np

使用下面的代码指定由 alpha 表示的 95%的置信度。

alp = 0.05

使用下面的代码创建两个样本数据。

samp_data1 = np.array([14, 17,  10, 19, 7, 20])
samp_data2 = np.array([ 3,  2, 10, 16,  10,  8])

使用下面的代码计算一个样本和每个样本中的观察值之间的差异。

diffsamp = samp_data1 - samp_data2                     
len_no_obs = len(samp_data1) 

此外,使用以下代码计算 CI 的均值和方差、临界值和半径。

diffmean = np.mean(diffsamp)                      
diffvar = np.var( diffsamp, ddof=1 )          
criticalvalue = stats.t.ppf(q = 1-alp/2, df = len_no_obs - 1)   
rad = criticalvalue*np.sqrt(diffvar)/np.sqrt(len_no_obs)

现在使用下面的代码计算置信区间差。

print(diffmean - rad, diffmean + rad)

Python Scipy Confidence Interval Difference

Python Scipy Confidence Interval Difference

这就是求置信区间差的方法。

阅读: Scipy 信号-有用教程

Python Scipy 置信区间样本

在本节中,我们将创建一个函数,它将根据给定的样本数据计算置信区间。

让我们按照下面的步骤来创建一个方法或函数。

使用下面的 python 代码导入所需的库。

from scipy import stats
import numpy as np

使用下面的代码创建一个函数来计算给定数据样本的置信区间。

 def m_conf_intval(samp_data, confid=0.95):
    data = 1.0 * np.array(samp_data)
    len_n = len(data)
    mean, std_err = np.mean(data), stats.sem(data)
    h = std_err * stats.t.ppf((1 + confid) / 2., len_n-1)
    return mean, mean-h, mean+h

现在,使用下面的代码向上面创建的方法提供样本数据。

data = [2,4,6,3,8,9,4]

m_conf_intval(data)

Python Scipy Confidence Interval Sample

Python Scipy Confidence Interval Sample

看输出,置信区间的范围是 2.729 到 7.556。

在上面的代码中,我们创建了一个方法*m_conf_intval()*来计算给定数据或样本的置信区间。

另外,看看更多的 Python SciPy 教程。

因此,在本教程中,我们已经了解了" Python Scipy 置信区间"并涵盖了以下主题。

  • Python Scipy 置信区间
  • Python Scipy 置信区间 T 检验
  • Python Scipy 置信区间均值
  • Python Scipy 置信区间比例
  • Python Scipy 置信区间 T 分布
  • Python 科学置信区间二项式
  • Python Scipy 置信区间线性回归
  • Python Scipy 置信区间差
  • Python Scipy 置信区间示例

Bijay Kumar MVPBijay Kumar

Python 是美国最流行的语言之一。我从事 Python 工作已经有很长时间了,我在与 Tkinter、Pandas、NumPy、Turtle、Django、Matplotlib、Tensorflow、Scipy、Scikit-Learn 等各种库合作方面拥有专业知识。我有与美国、加拿大、英国、澳大利亚、新西兰等国家的各种客户合作的经验。查看我的个人资料。

enjoysharepoint.com/

Scipy 常量–多个示例

原文:https://pythonguides.com/scipy-constants/

Python & Machine Learning training courses

在这个 Python 教程中,我们将学习“ Scipy 常量,在这里我们将了解 Scipy 中不同类型的常量。此外,涵盖以下主题。

  • 科学常数 Python
  • Scipy 常量单位
  • Scipy 常量列表
  • 科学常数 C
  • 科学常数ε0
  • Scipy 常量查找
  • 科学常数 hbar
  • Scipy Constants mu0
  • 光速常数
  • 科学常数里德伯
  • 科学常数温度

目录

科学常数 Python

Scipy Constants 是一个 Python 子包,包含许多不同类型的科学领域常数。这些常数可以根据我们在数据科学、深度学习、机器学习中的需要来使用。

Scipy 中有三种类型的常量:

  • 物理常数:物理常数有真空中的光速( c )、磁常数(mu_0)等。
  • 数学常数:数学常数有圆周率( pi )、黄金分割率( golden ) 、( golden_ratio )。
  • 单位:单位有*Mass**Time**Angle*等。

在后面的小节中,我们将分别学习每个常数。

这里我们将使用 Jupyter 笔记本来演示如何导入和使用 Scipy 常量。

打开 Jupyter Notebook,在单元格中键入以下代码以导入 Scipy 常量。

import scipy.constants as constant

Scipy Constants Python

Scipy Constants Python

让我们检查一些 Scipy 常量的值。

使用以下代码检查数学常数Pi的值。

print(constant.pi)

使用以下代码检查物理常数speed of light的值。

print(constant.speed_of_light)

使用以下代码检查 Uni gram的值。

print(constant.gram)

Scipy Constant

Scipy Constant

另外,检查:Python 中的 Scikit 是学什么的

Scipy 常量单位

在这里,我们将了解 Scipy 单元,Scipy 中有 15 种类型的单元,每种类型都包含其常数。

下面给出了 Scipy 中的单位类型。

  • SI 前缀
  • 二进制前缀
  • 时间
  • 长度
  • 压力
  • 速度
  • 面积
  • 温度
  • 活力
  • 力量
  • 光学

角度

角度单位有degree*arcmin*``*arcminute*``*arcsec*``*arcsecond*等常量。这些常数的单位值是弧度。

运行下面的代码来查看 Angle 中所有常量的值。

print('The value of degree in radians :',const.degree)     
print('The value of arc minute in radians :',const.arcmin)    
print('The value of arc minute in radians :',const.arcminute) 
print('The value of arc second in radians :',const.arcsec)    
print('The value of arc second in radians :',const.arcsecond)

Scipy Constants Units Angle

Scipy Constants Units Angle

质量

质量单位有*gram**metric**grain*等常量。它以千克为单位返回单位值。下面用代码显示了所有的常数。

运行下面的代码来查看所有联系人的值。

print('The value of gram is equal to 10 to the power -3 in kg :',const.gram)        
print('The value of gram is equal to 10 to the power 3 in kg :',const.metric_ton)  
print('The value of one grain in kg :',const.grain)       
print('The value of one pound in kg :',const.lb)          
print('The value of one pound in kg :',const.pound)       
print('The value of one ounce in kg :',const.oz)          
print('The value of one ounce in kg :',const.ounce)       
print('The value of one stone in kg :',const.stone)
print('The value of one slug in kg :',const.slug)
print('The value of one long ton in kg :',const.long_ton)    
print('The value of one short ton in kg :',const.short_ton)
print('The value of one inch version of a slug in kg :',const.slinch)
print('The value of one inch version of a slug in kg :',const.blob)
print('The value of one troy ounce in kg :',const.troy_ounce)  
print('The value of one troy pound in kg :',const.troy_pound)  
print('The value of one carat in kg :',const.carat)       
print('The value of one atomic mass constant in kg :',const.atomic_mass) 
print('The value of one atomic mass constant in kg :',const.m_u)         
print('The value of one atomic mass constant in kg :',const.u)

Scipy Constants Units Mass

Scipy Constants Units Mass

读取 Scipy 优化

SI 前缀

SI 前缀单位有*Zetta**Yotta**Peta*等常量。它以米为单位返回单位值。下面用代码显示了所有的常数。

print('The value of yotta is equal to 10 to the power 24 :',const.yotta)    
print('The value of zetta is equal to 10 to the power 21 :',const.zetta)    
print('The value of exa is equal to 10 to the power 18 :',const.exa)      
print('The value of peta is equal to 10 to the power 15 :',const.peta)     
print('The value of tera is equal to 10 to the power 12 :',const.tera)     
print('The value of giga is equal to 10 to the power 9 :',const.giga)     
print('The value of mega is equal to 10 to the power 6 :',const.mega)     
print('The value of kilo is equal to 10 to the power 3 :',const.kilo)     
print('The value of hecto is equal to 10 to the power 2 :',const.hecto)    
print('The value of deka is equal to 10 to the power 1 :',const.deka)     
print('The value of deci is equal to 10 to the power -1 :',const.deci)     
print('The value of centi is equal to 10 to the power -2 :',const.centi)    
print('The value of milli is equal to 10 to the power -3 :',const.milli)    
print('The value of micro is equal to 10 to the power -6 :',const.micro)
print('The value of nano is equal to 10 to the power -9 :',const.nano) 
print('The value of pico is equal to 10 to the power -12 :',const.pico)   
print('The value of femto is equal to 10 to the power -15 :',const.femto) 
print('The value of atto is equal to 10 to the power -18 :',const.atto)
print('The value of zepto is equal to 10 to the power -21 :',const.zepto)
print('The value of yocto is equal to 10 to the power -24 :',const.yocto)

Scipy Constants Units SI prefixes

Scipy Constants Units SI prefixes

二进制前缀

二进制前缀单元有*gibi**pebi**mebi*等常量。它以字节为单位返回单位值。下面用代码显示了所有的常数。

print('The value of kibi is equal to 2 to the power 10 :',const.kibi)
print('The value of kibi is equal to 2 to the power 20 :',const.mebi)
print('The value of kibi is equal to 2 to the power 30 :',const.gibi) 
print('The value of kibi is equal to 2 to the power 40 :',const.tebi) 
print('The value of kibi is equal to 2 to the power 50 :',const.pebi) 
print('The value of kibi is equal to 2 to the power 60 :',const.exbi) 
print('The value of kibi is equal to 2 to the power 70 :',const.zebi) 
print('The value of kibi is equal to 2 to the power 80 :',const.yobi) 

Scipy Constants Units Binary prefixes

Scipy Constants Units Binary prefixes

时间

时间单位有*minute**day**hour*等常量。它以秒为单位返回单位值。下面用代码显示了所有的常数。

print('The value of one minute in seconds :',const.minute)
print('The value of one hour in seconds :',const.hour)
print('The value of one day in seconds :',const.day) 
print('The value of one week in seconds :',const.week)  
print('The value of one year in seconds :',const.year) 
print('The value of one Julian_year in seconds :',const.Julian_year)

Scipy Constants Units Time

Scipy Constants Units Time

长度

长度单位有常量,如*foot**mile**fermi*等。它返回以米为单位的单位值。下面用代码显示了所有的常数。

print('The value of one inch in meters :',const.inch)
print('The value of one foot in meters :',const.foot) 
print('The value of one yard in meters :',const.yard) 
print('The value of one mile in meters :',const.mile) 
print('The value of one mil in meters :',const.mil) 
print('The value of one pt in meters :',const.pt) 
print('The value of one point in meters :',const.point)  
print('The value of one survey foot in meters :',const.survey_foot)  
print('The value of one survey mile in meters :',const.survey_mile) 
print('The value of one nautical mile in meters :',const.nautical_mile)  
print('The value of one fermi in meters :',const.fermi)
print('The value of one angstrom in meters :',const.angstrom)
print('The value of one micron in meters :',const.micron) 
print('The value of one astronomical unit in meters :',const.au)
print('The value of one astronomical unit in meters :',const.astronomical_unit) 
print('The value of one light year in meters :',const.light_year)        
print('The value of one parsec in meters :',const.parsec)

Scipy Constants Units Length

Scipy Constants Units Length

压力

压力单位有*psi**atm**bar*等常量。它返回以帕斯卡为单位的单位值。下面用代码显示了所有的常数。

print('The value of standard atomsphere in pascals :',const.atm) 
print('The value of standard atomsphere in pascals :',const.atmosphere) 
print('The value of one bar in pascals :',const.bar) 
print('The value of one torr in pascals :',const.torr)  
print('The value of one torr in pascals :',const.mmHg) 
print('The value of one psi in pascals :',const.psi) 

Scipy Constants Units Pressure

Scipy Constants Units Pressure

体积

体积单位有常数如*gallon**litre**barrel*等。它以立方米为单位返回单位值。下面用代码显示了所有的常数。

print('The value of one litre in cubic meters :',const.liter) 
print('The value of one litre in cubic meters :',const.litre)      
print('The value of one gallon (United States) in cubic meters :',const.gallon)         
print('The value of one gallon (United States) in cubic meters :',const.gallon_US)
print('The value of one gallon (United Kingdom) in cubic meters :',const.gallon_imp) 
print('The value of one fluid ounce (United States) in cubic meters :',const.fluid_ounce) 
print('The value of one fluid ounce (United States) in cubic meters :',const.fluid_ounce_US)
print('The value of one fluid ounce (United Kindom) in cubic meters :',const.fluid_ounce_imp)
print('The value of one barrel in cubic meters :',const.barrel)
print('The value of one barrel in cubic meters :',const.bbl)

Scipy Constants Units Volume

Scipy Constants Units Volume

速度

速度单位有*mph**mach**knot*等常量。它以米/秒为单位返回单位值。下面用代码显示了所有的常数。

print('The value of kmh kilometers per hour in meters per second :',const.kmh) 
print('The value of mph miles per hour in meters per second :',const.mph) 
print('The value of one mach meters per second :',const.mach) 
print('The value of one mach meters per second :',const.speed_of_sound) 
print('The value of one knot meters per second :',const.knot) 

Scipy Constants Units Speed

Scipy Constants Units Speed

区域

面积单位有像公顷、英亩这样的常数。它以平方米为单位返回单位值。下面用代码显示了所有的常数。

print('The value of one hectare in square meters :',const.hectare)
print('The value of one acre in square meters :',const.acre)

Scipy Constants Units Area

Scipy Constants Units Area

温度

温度单位有零摄氏度、华氏度等常量。它返回开尔文单位值。下面用代码显示了所有的常数。

print('The value of zero of celsius scale in Kelvin :',const.zero_Celsius)
print('The value of zero of fahrenheit scale in Kelvin :',const.degree_Fahrenheit)

Scipy Constants Units Temperature

Scipy Constants Units Temperature

能量

能量单位有 eV、卡路里等常量。它以焦耳为单位返回单位值。下面用代码显示了所有的常数。

print('The value of one electron volt in Joules :',const.eV) 
print('The value of one electron volt in Joules :',const.electron_volt) 
print('The value of one calorie (Thermochemical) in Joules :',const.calorie) 
print('The value of one calorie (Thermochemical) in Joules :',const.calorie_th) 
print('The value of one calorie (International steam table calorie)in Joules :',const.calorie_IT) 
print('The value of one erg in Joules :',const.erg)  
print('The value of one british thermal unit in Joules :',const.Btu)  
print('The value of one british thermal unit (International steam table) in Joules :',const.Btu_IT)  
print('The value of one british thermal unit (International steam table) in Joules :',const.Btu_th)
print('The value of one ton of TNT in Joules :',const.ton_TNT)

Scipy Constants Units Energy

Scipy Constants Units Energy

功率

功率单位有常量,如 hp,马力。它以瓦特为单位返回单位值。下面用代码显示了所有的常数。

print('The value of one horsepower in watts :',const.hp) 
print('The value of one horsepower in watts :',const.horsepower)

Scipy Constants Units Power

Scipy Constants Units Power

光学

光学单元具有返回光学频率的常数*lambda2nu( )*和返回波长的常数*nu2lambda( )*

力的单位有*kgf**dyn*等常量。它以牛顿为单位返回单位值。下面用代码显示了所有的常数。

print('The value of one dyne in newtons :',const.dyn)
print('The value of one dyne in newtons :',const.dyne)
print('The value of one pound force in newtons :',const.lbf)
print('The value of one pound force in newtons :',const.pound_force)
print('The value of one kilogram force in newtons :',const.kgf)
print('The value of one kilogram force in newtons :',const.kilogram_force)

Scipy Constants Units Force

Scipy Constants Units Force

阅读:Python 中的 tensor flow

Scipy 常量列表

要查看或列出 Scipy 中的所有常数,为此我们将使用函数 dir( ) ,我们将从 Scipy 导入的常数传递给该函数来查看所有常数。

这里我们将使用下面的代码导入 Scipy 子包常量。

import scipy.constants as const

现在将上面导入的子包传递给函数*dir( )*

print(dir(const))

在上面的代码函数*dir( )*中,接受子包名称*const*并显示该包中的所有常量,如下面的输出所示。

Scipy Constants list

Scipy Constants list

阅读:py torch 是什么以及如何使用它

科学常数 C

在 Scipy 中,常数*c* 代表真空中的光速,是一个物理常数。

要导入这些常量,请遵循以下步骤:

import scipy.constants as cons

检查真空中光速不变的值。

print('The value of speed of light in vacuum :',cons.c)

在这里,我们可以使用*cons.c*来访问常量。

Scipy Constants C

Scipy Constants C

用常数*c*表示的真空中光速的值是 299792458.0

阅读:使用 Python 的机器学习

科学常数ε0

在 Scipy 中,*epsilon 0*是存在于*scipy.constants*内的电常数。

要导入这些常量,请遵循以下步骤:

import scipy.constants as cons

使用以下代码检查电常数的值。

 print('The value of the electric constant :',cons.epsilon_0)

在这里,我们可以使用*cons.epsilon_0*来访问常量。

Scipy Constants epsilon 0

Scipy Constants epsilon 0

阅读:Scipy Sparse–有用的教程

Scipy 常量查找

为了获得 Scipy 中物理常数的密钥,使用了*scipy.constants*的方法*find( )*

下面给出了语法。

scipy.constants.find(sub_str=None, disp=False)

其中参数为:

  • sub_str: 它是子串或者是我们要搜索其关键字的物理常量的名称。
  • dips: 如果设置为True则返回找到的键,否则不显示任何内容列出所有键。

让我们用下面的代码来举例说明如何导入和列出物理常数的键。

from scipy.constants import find, physical_constants

检查包含字典***'avogadro'***的物理常数中的键。

find('avogadro')

使用以下代码列出常数***'Avogadro constant'***

physical_constants['Avogadro constant']

Scipy Constants find

Scipy Constants find

阅读:Scipy Stats Zscore+Examples

科学常数 hbar

在 Scipy 中,常数*hbar*是普朗克常数的修改形式,存在于值等于*h= h/2pi)**scipy.constants*内。

要导入这些常量,请遵循以下步骤:

import scipy.constants as cons

使用下面的代码检查普朗克常数的值。

print('The value of Plancs constant :',cons.hbar)

Scipy Constants hbar

Scipy Constants hbar

阅读: Python Scipy 最小化【附 8 个例子】

科学常数 mu0

在 Scipy 中,*mu_0*是存在于*scipy.constants*内的磁常数。

要导入这些常量,请遵循以下步骤:

import scipy.constants as cons

使用以下代码检查磁常数的值。

print('The value of the magnetic constant :',cons.mu_0)

在这里,我们可以访问常数*cons.mu_0*

Scipy Constants mu0

Scipy Constants mu0

阅读: Python Scipy 置信区间

光速常数

在 Scipy 中,常数*speed_of_ligh*代表真空中的光速,是一个物理常数。

要导入这些常量,请遵循以下步骤:

import scipy.constants as cons

检查真空中光速不变的值。

print('The value of speed of light in vacuum :',cons.c)

Scipy Constants speed of light

Scipy Constants speed of light

科学常数里德堡

在 Scipy 中,常数*Rydberg*是里德伯常数,是物理常数。

要导入这些常量,请遵循以下步骤:

import scipy.constants as cons

检查里德伯常数的值。

print('The value of Rydberg constant :',cons.Rydberg)

Scipy Constants Rydberg

Scipy Constants Rydberg

阅读: Python Scipy 指数

Scipy 温度常数

温度单位有*zero_Celsius**degree_Fahrenheit*等常量。它返回开尔文单位值。下面用代码显示了所有的常数。

print('The value of zero of celsius scale in Kelvin :',const.zero_Celsius)
print('The value of zero of fahrenheit scale in Kelvin :',const.degree_Fahrenheit)

Scipy Constants Units Temperature

Scipy Constants Units Temperature

看看上面输出中两个常量的值。

还有,多看看一些教程。

在本教程中,我们学习了" Scipy 常量"并涵盖了以下主题。

  • 科学常数 Python
  • Scipy 常量单位
  • Scipy 常量列表
  • 科学常数 C
  • 科学常数ε0
  • Scipy 常量查找
  • 科学常数 hbar
  • Scipy Constants mu0
  • 光速常数
  • 科学常数里德伯
  • 科学常数温度

Bijay Kumar MVPBijay Kumar

Python 是美国最流行的语言之一。我从事 Python 工作已经有很长时间了,我在与 Tkinter、Pandas、NumPy、Turtle、Django、Matplotlib、Tensorflow、Scipy、Scikit-Learn 等各种库合作方面拥有专业知识。我有与美国、加拿大、英国、澳大利亚、新西兰等国家的各种客户合作的经验。查看我的个人资料。

enjoysharepoint.com/

scipy Convolve–完整指南

原文:https://pythonguides.com/scipy-convolve/

Python & Machine Learning training courses

在这个 Python 教程中,我们将学习“ Scipy Convolve ”,此外,我们还将使用一些例子讨论以下主题。

  • Scipy 卷积 3d
  • 科学卷积 2d
  • Scipy 卷积 1d
  • 快速卷积 fft
  • 高斯卷积
  • 敏捷的回旋步伐
  • 沿轴卷曲
  • 卷曲核

目录

Scipy 卷积 1d

Scipy 在模块*scipy.ndimage*中有一个方法*convolve1d()*,它使用提供的权重计算指定轴上的一维卷积。

下面给出了语法。

scipy.ndimage.convolve1d(input, weights, axis=- 1, output=None, mode='reflect', cval=0.1, origin=1)

其中参数为:

  • 输入(数组): 输入的是数组数据。
  • 权重(ndarray): 它是一维的数列。
  • axis(int): 该参数表示给定数组中要计算卷积的轴。
  • output(dtype,array): 用于指定作为输出返回的数组的数据类型。
  • mode(): 当我们想要扩展输入数组的边界时,它用来控制输入数组的边界。模式有*wrap**constant**nearest**mirror**reflect*
  • cval(标量): 当模式设置为constant时,用于填充输入数组过去的边。
  • origin(int): 用于将过滤器放在给定的输入数组上,如果值为零则将过滤器放在中间。如果值为正,将滤镜放在左侧,如果值为负,将滤镜放在右侧。

让我们通过下面的步骤来了解一个示例:

使用下面的 python 代码导入所需的库。

from scipy import ndimage

使用下面的 Python 代码创建一个包含多个值和权重的数组。

a = [4,6,3,5,6,0,9]
w = [2,6]

现在将上面创建的数组和权重传递给方法*convolve1d*

ndimage.convolve1d(a,weights=w)

Scipy Convolve 1d

Scipy Convolve 1d

阅读: Scipy 优化–实用指南

Scipy 卷积器 2d

Scipy 在模块*scipy.ndimage*中有一个方法*convolve()*,它使用提供的权重计算指定轴上的多维卷积。

下面给出了语法。

scipy.ndimage.convolve(input, weights, axis=- 1, output=None, mode='reflect', cval=0.1, origin=1)

其中参数为:

  • 输入(数组): 输入的是数组数据。
  • 权重(ndarray): 权重数组的维数必须等于输入数组的维数。
  • output(dtype,array): 用于指定作为输出返回的数组的数据类型。
  • mode(): 当我们想要扩展输入数组的边界时,它用来控制输入数组的边界。这些模式包括环绕、恒定、最近、镜像和反射。
  • cval(标量):当模式设置为常量时,它用于填充输入数组的过去的边。
  • origin(int):用于在给定的输入数组上放置过滤器,如果值为零,则将过滤器放在中间。如果值为正,将滤镜放在左侧,如果值为负,将滤镜放在右侧。

让我们通过下面的步骤来了解一个示例:

使用下面的 python 代码导入所需的库。

from scipy import ndimage
import numpy as np

使用下面的 Python 代码创建一个包含多个值和权重的二维数组。

array_data = np.array([(5,4,6,8),(1,0,7,4)])
weight = np.array([[0,0,1],[1,1,1]])

现在将上面创建的二维数组和权重传递给方法*convolve*

ndimage.convolve(array_data,weights=weight,cval=0.1,mode='constant')

Scipy Convolve 2d

Scipy Convolve 2d

阅读:剪切旋转图像

Scipy 卷积 3d

Scipy 在模块*scipy.ndimage*中有一个方法*convolve()*,用于计算多维卷积。这里,我们将使用与上一小节中使用的 3d 数组相同的方法。

下面给出了语法。

scipy.ndimage.convolve(input, weights, axis=- 1, output=None, mode='reflect', cval=0.1, origin=1)

其中参数为:

  • 输入(数组): 输入的是数组数据。
  • 权重(ndarray): 权重数组的维数必须等于输入数组的维数。
  • output(dtype,array): 用于指定作为输出返回的数组的数据类型。
  • mode(): 当我们想要扩展输入数组的边界时,它用来控制输入数组的边界。这些模式包括环绕、恒定、最近、镜像和反射。
  • cval(标量): 用于在模式设置为常量时填充输入数组的过去的边。
  • origin(int): 用于将过滤器放在给定的输入数组上,如果值为零则将过滤器放在中间。如果值为正,将滤镜放在左侧,如果值为负,将滤镜放在右侧。

让我们通过下面的步骤来了解一个示例:

使用下面的 python 代码导入所需的库。

from scipy import ndimage
import numpy as np

使用下面的代码创建一个包含多个值和权重的三维数组。

array_data = np.array([[[3,18], [46, 80]], [[0, 0], [62, 86]],[[86,34],[22,19]]])
weight = np.array([[[0,0,1],[1,1,1],[0,1,0]]])

现在将上面创建的三维数组和权重传递给方法*convolve*

ndimage.convolve(array_data,weights=weight,cval=0.1,mode='constant')

Scipy Convolve 3d

Scipy Convolve 3d

阅读:科学常数

Scipy 卷积 fft

Scipy 在模块*scipy.signal*中有一个方法*fftconvolve()*,它使用方法 FFT (快速傅立叶变换)卷积 n 维数组。

下面给出了语法。

scipy.signal.fftconvolve(in1, in2, mode='full', method='auto')

其中参数为:

  • in1(array_data): 用于以数组的形式输入第一个信号。
  • in2(array_data): 用于以数组的形式输入第二个信号,维数必须与第一个输入数组相同。
  • 模式: 用于指定决定输出大小的字符串。模式可以是*same**full**valid*
  • 方法: 用于指定计算卷积的方法。方法可以是*auto**direct**fft*

让我们通过下面的步骤来了解一个示例:

使用下面的 python 代码导入所需的库。

from scipy.signal import fftconvolve
import scipy.signal
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline

生成随机噪声信号,并使用以下代码应用方法fftconvolveI()

random_gen = np.random.default_rng()
s = random_gen.standard_normal(800)
autocorrelation = fftconvolve(s, s[::-1], mode='full')

让我们用下面的代码画出上面卷积的信号。

fig, (orig_axes, mag_axes) = plt.subplots(2, 1)
orig_axes.plot(s)
orig_axes.set_title('It is noise')
mag_axes.plot(np.arange(-len(s)+1,len(s)), autocorrelation)
mag_axes.set_title('It is autocorrelation')
fig.tight_layout()
fig.show()

Scipy Convolve fftconvolve

Scipy Convolve fftconvolve

这是如何在 Python 中使用 Scipy 来使用方法*fftconvolve()*

阅读:科学统计

Scipy 卷积高斯

Scipy 在模块*scipy.ndimage*中有一个方法*gaussian_filter*,它将高斯函数应用到多维数组中。

下面给出了语法。

scipy.ndimage.gaussian_filter(input, sigma, order=0, output=int, mode='nerest', cval=1.1, truncate=3.1)

其中参数为:

  • 输入(数组 _ 数据): 输入的是数组数据。
  • ∑(标量序列): 高斯核标准差。
  • 顺序(int): 用于指定过滤器的顺序。
  • output(dtype,array): 用于指定作为输出返回的数组的数据类型。
  • mode(): 当我们想要扩展给定数组的边界时,它用来控制作为输入的该数组的边界。模式有*wrap**constant**nearest**mirror**reflect*
  • cval(标量): 用于当模式设置为constant时,填充给定数组过去的边作为输入。

方法*gaussian_filter*返回 ndarray 类型的 gaussian_filter

让我们通过下面的步骤用一个例子来理解:
使用下面的 python 代码导入所需的库。

from scipy.ndimage import gaussian_filter
import numpy as np

使用下面的代码创建一个包含值的数组。

array_data = np.arange(100, step=4).reshape((5,5))
array_data

现在,使用下面的代码对数组数据应用高斯过滤器。

gaussian_filter(array_data, sigma=1)

Scipy Convolve Gaussian

Scipy Convolve Gaussian

这是如何在 Python 程序中使用 Scipy 将高斯过滤器应用于数据数组。

阅读: Scipy Misc + Examples

Scipy 沿轴卷积

这里我们将使用 Scipy 的相同方法*convolve1d()*在指定的轴上卷积给定的数组。

要了解方法*convolve()*,请参考上述小节。

让我们以下面的步骤为例:

使用下面的 python 代码导入所需的库。

from scipy import ndimage
import numpy as np

使用下面的 python 代码创建一个包含多个值和权重的二维数组。

array_data = np.array([(4,5,8,6),(0,1,4,7)])
weight = [0,1,1]

将上面创建的二维数组和权重传递给方法*convolve*,不指定轴参数。

ndimage.convolve1d(array_data,weights=weight)

使用下面的代码,在轴等于 0 的情况下再次运行上面的代码。

ndimage.convolve1d(array_data,weights=weight,axis=0)

Scipy Convolve along axis

Scipy Convolve along axis

看看两个代码的结果,一个没有轴,另一个有轴。

阅读: Scipy 信号-有用教程

Scipy 卷积内核

权重是卷积中称为核的一组值,它作为输入在给定的数组上滑动以转换该数据。这里我们将使用我们在上面小节中学到的相同的 Scipy 方法*convolve()*

让我们按照以下步骤通过一个示例来理解:

使用下面的 python 代码导入所需的库。

from scipy import ndimage
import numpy as np

使用下面的代码创建一个包含几个值和权重或内核的二维数组。

array_data = np.array([(1,4,8,6),(4,7,0,4)])
kernel = np.array([[1,0,1],[1,1,0]])

将上面创建的二维数组和内核传递给方法*convolve*并查看结果。

ndimage.convolve(array_data,weights=kernel)

使用下面的代码创建一个新的内核。

kernel_2 = np.array([[0,0,1],[0,1,1]])

同样,将新内核传递给一个方法,并使用下面的代码查看结果。

ndimage.convolve(array_data,weights=kernel_2)

Scipy Convolve kernel

Scipy Convolve kernel

这就是如何使用不同的内核对相同的数据实现不同的转换。

另外,请查看以下 Python SciPy 教程。

因此,在本教程中,我们学习了“ Scipy Convolve ”并涵盖了以下主题。

  • Scipy 卷积 3d
  • 科学卷积 2d
  • Scipy 卷积 1d
  • 快速卷积 fft
  • 高斯卷积
  • 敏捷的回旋步伐
  • 沿轴卷曲
  • 卷曲核

Bijay Kumar MVPBijay Kumar

Python 是美国最流行的语言之一。我从事 Python 工作已经有很长时间了,我在与 Tkinter、Pandas、NumPy、Turtle、Django、Matplotlib、Tensorflow、Scipy、Scikit-Learn 等各种库合作方面拥有专业知识。我有与美国、加拿大、英国、澳大利亚、新西兰等国家的各种客户合作的经验。查看我的个人资料。

enjoysharepoint.com/

如何使用 Python Scipy 差分进化

原文:https://pythonguides.com/scipy-differential-evolution/

Python & Machine Learning training courses

我们将学习“ Python Scipy 差分进化 ”,差分进化(DE)是一种基于种群的元启发式搜索技术,它基于进化过程迭代地改进潜在的解决方案,以优化问题。还将介绍如何使用不同的策略并行计算解决方案,主题如下。

  • 什么是差异进化
  • Python 科学差分进化
  • 如何使用不同策略的科学差分进化
  • 如何并行执行快速差分进化
  • 定义约束并在差异进化中使用它们
  • Python Scipy 差分进化界限

目录

什么是差异进化

差分进化(DE),一种用于进化计算的技术,寻求迭代地增强关于指定质量度量的候选解。

由于它们可以搜索很宽的潜在解空间,并且对被优化的问题很少或不做假设,这种技术经常被称为元启发式。然而,像 DE 这样的元试探法并不能确保找到理想的解决方案。

不同于传统的优化技术,如梯度下降和拟牛顿法,它们都要求优化问题是可微的,DE 不使用被优化问题的梯度,因此适用于多维实值函数。因此,差分进化可以应用于优化问题,甚至不连续,噪音,随时间变化等。

DE 使用简单的公式来组合当前的候选解,以创建新的候选解,维持候选解的群体,并保留手头的优化任务上具有最高分数或适应度的候选解。

在这种方法中,不需要梯度,因为优化问题被视为“黑箱”,它只提供给定候选解的质量度量。

  • 潜在解决方案的群体是差分进化算法的基本变体的运行方式(称为代理)。通过组合群体中当前代理的位置,这些代理使用简单的数学公式在搜索空间中移动。
  • 如果一个代理的新位置是一个改进,它被接受并添加到群体中;否则就是刚淘汰。人们希望,但不能保证,重复这一程序将导致最终发现一个可行的解决办法。

阅读:如何使用 Python Scipy Linprog

Python Scipy 差分进化

模块scipy.optimize有一个方法differential_evolution(),可以找到多元函数的全局最小值。

下面给出了语法。

scipy.optimize.differential_evolution(func, bounds, strategy='best1bin', maxiter=1000, popsize=15, tol=0.01, mutation=(0.5, 1), recombination=0.7, seed=None, callback=None, disp=False, polish=True, init='latinhypercube', atol=0, updating='immediate', workers=1, constraints=(), x0=None, *, integrality=None, vectorized=False)

其中参数为:

  • func(可调用):目标是最小化目标函数。必须具有 f(x,*args)的形式,其中 args 是完整解释函数所需的所有附加固定参数的元组,x 是一维数组形式的输入。n 就参数(x)而言等于 len。

  • 界限(序列):对于变量,界限。可以用两种方法之一来指定边界:1 .Bounds 类实例。2.(min,max)对,为 x 中的每个元素指定 func 的优化参数的有限下限和上限。参数的数量 N 通过边界的总和计算得出。

  • 策略(字符串):使用差异进化的技术。应该是下列值之一:“best1bin”、“best1exp”、“rand1exp”、“randtobest1exp”、“currenttobest1exp”、“best2exp”、“rand2exp”、“randtobest1bin”、“currenttobest1bin”、“best2bin”、“rand2bin”、“rand1bin”。

  • maxiter(int): 整个种群最多可以进化的代数。(maxiter + 1) * popsize * N 是可以执行的函数求值的最大次数(没有抛光)。

  • popsize(int): 用于确定人口总体规模的乘数。人口中有 popsize * N 人。如果 init 关键字用于提供初始填充,则忽略该术语。当使用 init='sobol '时,通过在 popsize * N 之后取 2 的下一次幂来确定群体大小。

  • tol(float): 当求解器达到收敛的相对容差时,NP . STD(pop)= atol+tol * NP . ABS(NP . mean(群体能量)),其中,atol 和 tol 是对应的绝对容差和相对容差。

  • 突变(浮点或元组):诱变常数。术语“不同重量”也在文献中使用,用字母 f 表示。如果提供浮子,应使用范围[0,2]。当值以元组(min,max)的形式给出时,使用抖动。在逐代的基础上,抖动随机修改变异常数。对于世代,U[min,max]用于计算变异常数。抖动可以大大加速收敛。虽然增加变异常数会减慢收敛速度,但会扩大搜索范围。

  • 重组(浮点):范围[0,1]应该是重组常数。这在文献中也称为交叉概率,用字母 CR 表示。增加这个值允许更多的突变体存活到下一代,但是这样做是以牺牲种群稳定性为代价的。

  • seed: 如果 seed 为 None(或 np.random)则使用 Numpy.random。它使用 RandomState 的单例。如果种子是整数,则创建 RandomState 的一个新实例,并用该种子作为种子。如果种子已经有一个生成器或 RandomState 实例,则使用它。对于重复最小化,请指定一个种子。

  • disp(bool): 在每次迭代时,打印计算后的函数。

  • 回调:跟踪最小化过程的函数。目前为止最好的答案是 xk。val 表示总体收敛的分数值。当 val 大于 1 时,该功能停止。当回调返回 True 时,最小化停止(任何抛光仍在进行)。

  • polish(boolean): 如果为真(默认),则在最后使用 L-BFGS-B 方法对最佳群体成员进行抛光,这可以略微增强最小化。当研究一个有限的问题时,信任-建构方法被用来代替它。

  • init(string,array_data): 表示执行的群体初始化的种类。应该是以下之一:“latinhypercube”、“sobol”、“halton”、“random”。

  • atol(float): 当达到收敛的绝对容差 NP . STD(pop)= atol+tol * NP . ABS(NP . mean(群体能量))时,其中 atol 和 tol 是对应的绝对和相对容差,问题无法解决。

  • 更新(延迟,立即):如果“立即”,则最优解向量在整个一代中重复更新。结果,收敛可能发生得更快,因为试验向量可能受益于理想结果的持续发展。当选择该选项时,最佳解决方案向量每一代更新一次。与并行化或矢量化兼容的唯一选项是“延迟”,它可以被 workers 和矢量化关键字覆盖。

  • workers(int 或 map-like):如果 workers 是一个整数,则群体被分成 workers 部分并并行计算(使用多重处理)。池)。要利用所有的 CPU 内核,请提供-1。或者,提供一个类似于映射的可调用函数,比如多重处理。Pool.map 用于同时评估总体。该评估由工人(func,iterable)完成。如果工人!= 1,此选项将用 updating='deferred '替换 updating 关键字。如果工人!= 1,此选项优先于矢量化关键字。它还要求 func 是可选择的。

  • 约束(bounds,LinearConstraint,NonLinearConstraint):除了边界 kwd 所施加的限制之外,对求解器的附加限制。采用了兰皮宁的策略。

  • x0(array_like 或 None):在开始时给出最小化的粗略估计。一旦群体被初始化,这个向量就代替初始(最佳)成员。即使给 init 一个初始种群,这种替换仍然会执行。Shape == x0 (N,)。

  • integrality(一维数组):一个布尔值,指示决策变量是否限于每个决策变量的整数值。该阵列传输到(N,)。如果任何决策变量需要积分,抛光过程不会改变它们。我们只利用落在上限和下限内的整数。如果边界之间没有整数值,将引发 ValueError。

  • 矢量化(布尔值):给定一个 x 数组,x.shape == (N,S),func 应该返回一个包含 shape 的数组,其中 S 是需要生成的解向量的数量,如果矢量化设置为 True。如果使用了约束,每个构建约束对象的函数都应该接受一个 x 数组,其中 x.shape == (N,S)并返回一个 shape (M,S)数组,其中 M 是约束组件的数量。工作者并行化的这种替代方案可以通过最小化来自重复函数调用的解释器开销来提高优化速度。如果工人!= 1,将不使用该关键字。updating='deferred '选项将优先于 updating 关键字。有关何时使用“矢量化”和何时使用“workers”的更多信息,请参见注释部分。

方法differential_evolution()返回res:optimize result 对象用于表示优化结果。解决方案数组 x、success、指示优化器是否成功终止的布尔指示以及解释终止原因的消息都是重要的特性。

让我们举个例子,了解一下方法differential_evolution()是如何工作的。

使用下面的 python 代码导入所需的库或方法。

from scipy import optimize

考虑 Rosenbrock 函数最小化问题。在“scipy.optimize”中,这个函数是使用下面的代码在 Rosen 中实现的。

bounds_ = [(0,1), (0, 1), (0, 1), (0, 1), (0, 1)]
result_ = optimize.differential_evolution(optimize.rosen, bounds_)
result_.x, result_.fun

Python Scipy Differential Evolution

Python Scipy Differential Evolution

这就是如何使用 Python Scipy 的方法*differential_evolution()*对目标函数rsoen执行差分进化。

阅读: Python Scipy Lognormal + 10 个例子

Python Scipy 差分进化策略

该算法特别适合于非微分非线性目标函数,因为它在搜索过程中不使用梯度信息。

该方法通过跟踪被表示为具有实值的向量的潜在答案群体来操作。当前解决方案的修改版本用于产生新的候选解决方案,每次算法迭代时,这些新的候选解决方案替换相当大的群体块。

使用 “策略” ,形成新的候选解,所述策略包括选择向其引入突变的基础解和来自群体的额外候选解,从所述群体中确定突变的数量和种类,称为差异向量。例如,对于变异中的差异向量,策略可能选择最佳候选解作为基础和随机解。

使用以下常用术语描述差异策略:

“DE/x/y/z”:其中 DE 指的是“差异进化”,x 表示将被改变的初始解。例如,“rand”代表随机,“best”代表在群体中找到的最佳解决方案。变量 y 和 z 用于表示添加到基础解的差向量的数量,例如 1,概率分布用于决定每个解在总体中是被保留还是被替换,例如分别为二项式或指数式。

由于配置“DE/best/1/bin”和“DE/best/2/bin”在广泛的目标函数上的强大性能,它们是很受欢迎的配置。

【策略】 参数是 Python Scipy 方法*differential_evolution*的一个至关重要的超参数,它规定了所执行的差分进化搜索的种类。这通常设置为【best 1 bin】(DE/best/1/bin),这是一个适合大多数问题的设置。通过从群体中选择随机解决方案,将它们彼此相除,并将结果的缩放版本添加到群体中的顶部候选解决方案,它生成新的候选解决方案。

阅读: Python Scipy Butterworth 滤镜

Python Scipy 差分进化并行

该函数将并行最小化,因此要了解差分进化并行是如何工作的,请参考上面小节中解释的参数updatingworkers

让我们以与上述小节相同的示例为例,但按照以下步骤进行并行化:

使用下面的 python 代码导入所需的库或方法。

from scipy import optimize

使用下面的代码考虑 Rosenbrock 函数最小化问题。

bounds_ = [(1,3), (1, 3), (1, 3), (1, 3), (1, 3)]
result_ = optimize.differential_evolution(optimize.rosen, bounds_,updating='deferred',workers=2)
result_.x, result_.fun

Python Scipy Differential Evolution Parallel

Python Scipy Differential Evolution Parallel

这就是如何使用 Python Scipy 的方法*differential_evolution()*和参数*workers*来执行并行差分进化。

阅读: Python Scipy 曲线拟合–详细指南

Python Scipy 差分进化约束

我们已经了解了如何计算差异进化及其参数,因此在本节中,我们将按照以下步骤进行约束最小化:

使用下面的 python 代码导入所需的库或方法。

from scipy import optimize
import numpy as np

使用下面的代码定义约束函数。

def constr_fun(x):
    return np.array(x[0] + x[1])

使用下面的代码,使用方法*NonLinearConstraint**Bounds*定义约束和界限或限制。

nlc_ = optimize.NonlinearConstraint(constr_fun, -np.inf, 1.8)
bounds_ = optimize.Bounds([0., 0.], [1., 2.])

现在使用下面的代码最小化约束。

result = optimize.differential_evolution(optimize.rosen, bounds_, constraints=(nlc_),
                                seed=1)
result.x, result.fun

Python Scipy Differential Evolution Constraints

Python Scipy Differential Evolution Constraints

这就是如何通过 Python Scipy 的方法*differential_evolution()*使用约束。

阅读: Python Scipy 加载 Mat 文件

Python Scipy 差分进化界限

Python Scipy 的方法*differential_evolution()*接受一个参数*bounds*。有两种方法来定义边界:1 .界限类实例号。2.对于 x 中的每个元素,使用(min,max)对来提供 func 的优化参数的有限下限和上限。边界总数用于计算参数计数 n。

让我们以上面小节中使用的相同示例为例,通过以下步骤来理解参数界限是如何工作的:

使用下面的 python 代码导入所需的库或方法。

from scipy import optimize
import numpy as np

使用下面的代码定义约束函数。

def constr_fun(x):
    return np.array(x[0] + x[1])

使用下面的代码,使用方法*NonLinearConstraint**Bounds*定义约束和界限或限制。

nlc_ = optimize.NonlinearConstraint(constr_fun, -np.inf, 1.8)
bounds_ = optimize.Bounds([0., 0.], [1., 2.])

在上面的代码中界限被定义为Bounds([0., 0.], [1., 2.])

现在使用下面的代码最小化约束。

result = optimize.differential_evolution(optimize.rosen, bounds_, constraints=(nlc_),
                                seed=1)
result.x, result.fun

现在,使用下面的代码更改界限的值。

nlc_ = optimize.NonlinearConstraint(constr_fun, -np.inf, 1.8)
bounds_ = optimize.Bounds([2., 0.], [1., 2.])

使用下面的代码计算不同边界的最小化约束。

result = optimize.differential_evolution(optimize.rosen, bounds_, constraints=(nlc_),
                                seed=1)
result.x, result.fun

Python Scipy Differential Evolution Bounds

Python Scipy Differential Evolution Bounds

这就是如何定义边界并在*differential_evolution()* Python Scipy 中使用它们。

您可能也喜欢阅读下面的 Python Scipy 教程。

我们已经学习了如何使用差分进化找到最优解,并并行执行差分进化以使过程更快,还学习了如何使用差分进化的约束和界限。

  • 什么是差异进化
  • Python 科学差分进化
  • 如何使用不同策略的科学差分进化
  • 如何并行执行快速差分进化
  • 定义约束并在差异进化中使用它们
  • Python Scipy 差分进化界限

Bijay Kumar MVPBijay Kumar

Python 是美国最流行的语言之一。我从事 Python 工作已经有很长时间了,我在与 Tkinter、Pandas、NumPy、Turtle、Django、Matplotlib、Tensorflow、Scipy、Scikit-Learn 等各种库合作方面拥有专业知识。我有与美国、加拿大、英国、澳大利亚、新西兰等国家的各种客户合作的经验。查看我的个人资料。

enjoysharepoint.com/

Python 科学距离矩阵

原文:https://pythonguides.com/scipy-distance-matrix/

Python & Machine Learning training courses

在本 Python 教程中,我们将学习“ Python Scipy 距离矩阵”,其中我们将使用不同的距离方法(如欧几里德、曼哈顿等)计算矩阵或数组之间的距离,并涵盖以下主题。

  • Python 科学距离矩阵
  • Python 科学距离矩阵 Cdist
  • Python Scipy 距离矩阵 Pdist
  • Python 科学距离矩阵欧几里得
  • Python Scipy 距离矩阵城市街区
  • Python Scipy 距离矩阵聚类
  • Python Scipy 距离矩阵定向 Hausdorff
  • Python Scipy 距离矩阵余弦
  • Python 科学距离相关矩阵

另外,查看 Python SciPy 的最新教程: Python Scipy Stats Kurtosis

目录

Python Scipy 距离矩阵

成对计算的矩阵向量之间的距离包含在距离矩阵中。我们可以使用由*scipy.spatial*模块提供的*distance_matrix()*方法来计算距离矩阵。在大多数情况下,矩阵具有二维数组的形状,矩阵行充当矩阵的向量(一维数组)。

下面给出了语法。

scipy.spatial.distance_matrix(x, y, threshold=1000000, p=2)

其中参数为:

  • x(array_data(m,k): 有 M 个向量的 K 维矩阵。
  • y(array_data(n,k)): N 乘向量的 K 维矩阵。
  • threshold(positive int): 如果 M * N * K 大于阈值,则该算法使用 Python 循环而不是大型临时数组。
  • p(float): 应该应用哪个闵可夫斯基 p 范数。

方法*distance_matrix()*返回一个矩阵,该矩阵测量 x 中的每个向量和 y 中的每个 ndarray 类型的向量之间的间距。

让我们以下面的步骤为例:

使用下面的 python 代码导入所需的库。

from scipy import spatial
import numpy as np

使用下面的代码创建矩阵。

x_mat = np.array([[2,3],[1,2],[3,3]])
y_mat = np.array([[1,2],[2,0],[5,0]])

使用下面的代码计算距离矩阵。

d_matrix = spatial.distance_matrix(x_mat,y_mat,p=2)

使用下面的代码查看距离矩阵。

print(d_matrix)

Python Scipy Distance Matrix

Python Scipy Distance Matrix

这就是如何使用模块 Python *scipy.spatial*的方法*distance_matrix()*计算距离矩阵。

也可阅读: Python Scipy 指数

Python Scipy 距离矩阵 Cdist

Python Scipy 在模块*scipy.spatial.distance*中包含了一个方法*cdist()*,该方法计算两个输入集合之间的距离。

下面给出了语法。

scipy.spatial.distance.cdist(XA, XB, metric='cosine')

其中参数为:

  • XA(array _ data):n 维中的原始 m [B] 观察值的数组,每个测量 m [B] 乘 n
  • XB(array _ data):n 维中的原始 m [B] 观察值的数组,每个测量 m [B] 乘 n
  • metric(callabel,str): 要应用的距离单位。距离函数可以是"堪培拉"、"布雷柯蒂斯"、"切比雪夫"、"相关"、"城市街区"、"余弦"、"欧几里得"、"骰子"、"汉明"、"库尔辛斯基"、"简森山农"、"库尔辛斯基"、"匹配"、"马哈拉诺比斯"、"明科夫斯基"、"罗素劳"、"罗格斯坦本"、"修克列迪安"。

方法 cdist() 返回的结果是大小为 m [A] 乘 m [B] 的距离矩阵。

让我们以下面的步骤为例:

使用下面的 python 代码导入所需的库。

from scipy.spatial.distance import cdist

使用下面的代码创建数据。

coord_data = [(25.056, -75.7226),
          (25.7411, -79.1197),
          (25.2897, -79.2294),
          (25.6716, -79.3378)]

在四个二维坐标之间,计算它们的欧几里得距离。

cdist(coord_data,coord_data,'euclidean')

Python Scipy Distance Matrix Cdist

Python Scipy Distance Matrix Cdist

这就是如何使用 Python Scipy 的方法*cdist()*来计算两个输入集合的每一对之间的距离。

阅读: Python Scipy 卡方测试

Python 科学距离矩阵 Pdist

Python Scipy 在模块*scipy.spatial.distance*中包含一个方法*pdist()*,用于计算 n 维空间中观测值之间的成对距离。

下面给出了语法。

scipy.spatial.distance.pdist(X, metric='minkowski)

其中参数为:

  • X(array _ data):n 维中 m 个唯一观测值的数组,m 乘 n 排列。
  • metric(callabel,str): 要应用的距离单位。距离函数可以是"堪培拉"、"布雷柯蒂斯"、"切比雪夫"、"相关"、"城市街区"、"余弦"、"欧几里得"、"骰子"、"汉明"、"库尔辛斯基"、"简森山农"、"库尔辛斯基"、"匹配"、"马哈拉诺比斯"、"明科夫斯基"、"罗素劳"、"罗格斯坦本"、"修克列迪安"。

方法pdist()返回 ndarray 类型的 Y(这是压缩的距离矩阵 Y)

让我们按照以下步骤,通过插图来理解:

使用下面的 python 代码导入所需的库。

from scipy.spatial.distance import pdist

使用下面的代码创建数据。

data = [(25.056, -75.7226),
          (25.7411, -79.1197),
          (25.2897, -79.2294),
          (25.6716, -79.3378)]

使用欧几里德距离(2-范数)作为点之间的距离度量来计算 m 点之间的距离。在矩阵数据中,点被排列成 m 个 n 维行向量。

pdist(data,'euclidean')

Python Scipy Distance Matrix Pdist

该指南使用 Python Scipy 的*pdist()*计算 n 维空间中观测值之间的成对距离

阅读: Scipy 寻找峰值–有用教程

Python Scipy 距离矩阵欧几里德

Python Scipy 在模块*scipy.spatial.distance*中包含了一个方法*euclidean()*,用于计算两个一维数组之间的欧几里德距离。

下面给出了语法。

scipy.spatial.distance.euclidean(u, v, w=None)

其中参数为:

  • u(array_data): 输入矩阵或数组。
  • v(array_data): 输入矩阵或数组。
  • w(array_data): 每个值在 u 和 v 中的权重,当默认选择无时,每个值的权重为 1。

方法*euclidean()*返回 double 类型的 euclidean(这是两个向量 u 和 v 的欧几里德距离)

让我们按照下面的步骤做一些例子:

导入方法*euclidean()*并使用下面的 python 代码计算距离。

from scipy.spatial.distance import euclidean
euclidean([2, 1, 0], [1, 1, 2])

Python Scipy Distance Matrix Euclidean

Python Scipy Distance Matrix Euclidean

看上面的输出,给定数组的欧氏距离是 2.236。

这就是如何使用 Python Scipy 的方法*euclidean()*计算欧几里德距离。

阅读: Python Scipy 特辑

Python Scipy 距离矩阵 Cityblock

Python Scipy 模块*scipy.spatial.distance*包含一个计算曼哈顿距离(也称为城市街区距离)的方法*cityblock()*

下面给出了语法。

scipy.spatial.distance.cityblock(u, v, w=None)

其中参数为:

  • u(array_data): 输入矩阵或数组。
  • v(array_data): 输入矩阵或数组。
  • w(array_data): 每个值在 u 和 v 中的权重,默认选择无时,每个值的权重为 1。

方法*cityblokc()*返回 double 类型的 (这是两个向量 u 和 v 的曼哈顿(cityblock)距离)

让我们按照下面的步骤做一些例子:

导入方法*cityblok()*并使用下面的 python 代码计算曼哈顿的距离。

from scipy.spatial.distance import cityblock
cityblock([1, 0, 2], [2, 1, 2])

Python Scipy Distance Matrix Cityblock

Python Scipy Distance Matrix Cityblock

看看上面的输出,给定数组的 cityblock(曼哈顿)距离是 2。

这就是如何使用 Python Scipy 的方法*cityblock()*计算城市街区距离。

阅读: Python Scipy Matrix +示例

Python Scipy 距离矩阵聚类

Python Scipy 模块*scipy.spatial.hierarchy*包含一个方法*linkage()*,该方法使用分层或凝聚方法对数据进行聚类。但是 “什么是层次聚类?”

  • 一种称为分层聚类的算法,通常被称为分层聚类分析,根据对象的相似程度将对象划分为多个聚类。结果是一个集群的集合,每个集群都不同于其他集群,但都有大体相似的东西。

Python Scipy Distance Matrix Clustering

Python Scipy Distance Matrix Clustering

下面给出了语法。

scipy.cluster.hierarchy.linkage(y, method='complete', optimal_ordering=False, metric='euclidean')

其中参数为:

  • y(ndarray): 一个压缩的距离矩阵。距离矩阵的上部三角形包含在称为压缩距离矩阵的平面阵列中。Pdist 返回这个表单作为结果。一个 m 乘 n 的数组也可以用来传递一组 n 维的 m 个观察向量。在压缩距离矩阵中不能有任何 nan 或 INF,所有元素必须是有限的。
  • 方法(str,function): 要使用的适当的联动算法。
  • optimal _ ordering(boolean):如果为真,连接矩阵将被重新排列,以使后续叶之间的距离尽可能短。当数据被可视化时,这导致了更容易理解的树结构。默认为 False,因为该算法可能会降低性能,尤其是对于大型数据集。
  • 度量(str): 如果 y 是观测向量的集合,那么使用这个距离度量;否则,忽略它。有关可接受的距离测量列表,请参考 pdist 功能。此外,还提供自定义距离功能。

方法 linkage() 返回 ndarray 类型的 z(链接矩阵用于对层次分组进行编码)

使用下面的 python 代码导入所需的库。

from scipy.cluster.hierarchy import linkage, dendrogram
import matplotlib.pyplot as plt

使用下面的代码创建我们想要执行聚类的数据。

data = [[i] for i in [1, 7, 1, 5, 2, 8, 8, 1]]

将上面创建的数据传递给带有 ward 的方法*linkage()*,使用下面的代码计算聚类。

res = linkage(data, 'ward')

使用下面的代码绘制上述结果的树状图。

fig = plt.figure(figsize=(5, 5))
dendo = dendrogram(res)

在上面的代码中,我们已经将方法***linkage(data,'ward')***的结果传递给方法*dendrogram(res)*来显示获得聚类的树状图。

Python Scipy Distance Matrix Clustering

Python Scipy Distance Matrix Clustering

这就是如何使用 Python Scipy 的方法*linkage()*计算距离矩阵聚类。

阅读:Scipy Stats Zscore+Examples

Python Scipy 距离矩阵定向 Hausdorff

Python Scipy 模块*scipy.spatial.distance*包含一个方法*directed_hausdorff()*,用于查找两个二维数组之间的有向 hausdorff 距离。

下面给出了语法。

scipy.spatial.distance.directed_hausdorff(u, v, seed=2)

其中参数为:

  • u(array_data,(M,N)): 输入矩阵或数组。
  • v(array_data,(ON)): 输入矩阵或数组。
  • seed(int): 默认值 0 通过随机重新排列 u 和 v 的值来确保可重复性。

方法*directed_hausdorff()*分别返回 double、int 和 int 类型的 d(数组 u 和 v 的有向豪斯多夫距离)index_1(构成豪斯多夫对的 u 中的点的索引)index_2(构成豪斯多夫对的 v 中的点的索引)

让我们以下面的步骤为例:

使用下面的 python 代码导入所需的库。

from scipy.spatial import distance
import numpy as np

使用下面的代码创建两个二维数组。

u_arr = np.array([(2.0, 0.0),
              (0.0, 2.0),
              (-2.0, 0.0),
              (0.0, -2.0)])
v_arr = np.array([(1.0, 0.0),
              (0.0, 1.0),
              (-1.0, 0.0),
              (0.0, -2.0)])

使用下面的代码计算上面创建的数组的有向豪斯多夫距离。

distance.directed_hausdorff(u_arr, v_arr)[0]

Python Scipy Distance Matrix Directed Hausdorff

Python Scipy Distance Matrix Directed Hausdorff

看看上面的输出,给定数组之间的有向 Hausdorff 距离是 1。

这就是如何使用 Python Scipy 的方法*directed_hausdorff()*计算有向 Hausdorff 距离。

阅读: Scipy 卷积-完整指南

Python Scipy 距离矩阵余弦

Python Scipy 模块*scipy.spatial.distance*包含一个方法*cosine()*,用于识别一维数组的余弦距离。

假设 u 和 v 的余弦距离为:

Python Scipy Distance Matrix Cosine

Python Scipy Distance Matrix Cosine

下面给出了语法。

scipy.spatial.distance.cosine(u, v, w=None)

其中参数为:

  • u(array_data): 输入矩阵或数组。
  • v(array_data): 输入矩阵或数组。
  • w(array_data): 每个值在 u 和 v 中的权重,当默认选择无时,每个值的权重为 1。

方法*cosine()*返回 double 类型的 cosine(这是 u 和 v 彼此之间的余弦距离)

让我们以下面的步骤为例:

导入方法*cosine()*并使用下面的 python 代码计算距离。

from scipy.spatial.distance import cosine
cosine([0, 1, 1], [1, 0, 1])

Python Scipy Distance Matrix Cosine

Python Scipy Distance Matrix Cosine

看上面的输出,给定数组的余弦距离是 0.5。

这就是如何使用 Python Scipy 的方法*cosine()*计算余弦距离。

阅读: Scipy Integrate +示例

Python Scipy 距离相关矩阵

Python Scipy 在模块*scipy.spatial.distance*中有一个方法*correlation()*,用于识别两个一维数组中间的相关距离。

假设 u 和 v 的相关距离为:

Python Scipy Distance Correlation Matrix

Python Scipy Distance Correlation Matrix

下面给出了语法。

scipy.spatial.distance.correlation(u, v, w, centered = False)
  • u(array_data): 输入矩阵或数组。
  • v(array_data): 输入矩阵或数组。
  • w(array_data): 每个值在 u 和 v 中的权重,当默认选择无时,每个值的权重为 1。
  • 居中(布尔):如果准确,u 和 v 会在中间。默认情况下为 True。

方法*correlation()*返回 double 类型的*correlation*(这是一维数组 u 和 v 在相关性方面的分离)。

让我们以下面的步骤为例:

导入方法*correlation()*并使用下面的 python 代码计算距离。

from scipy.spatial.distance import correlation
correlation([0, 1, 1], [1, 0, 1])

Python Scipy Distance Correlation Matrix

Python Scipy Distance Correlation Matrix

看上面的输出,给定数组的相关距离是 1.5。

这就是如何使用 Python Scipy 的方法*correlation()*计算相关距离。

您可能也喜欢阅读下面的 Python Scipy 教程。

因此,在本教程中,我们已经了解了“Python Scipy 距离矩阵”并涵盖了以下主题。

  • Python 科学距离矩阵
  • Python 科学距离矩阵 Cdist
  • Python Scipy 距离矩阵 Pdist
  • Python 科学距离矩阵欧几里得
  • Python Scipy 距离矩阵城市街区
  • Python Scipy 距离矩阵聚类
  • Python Scipy 距离矩阵定向 Hausdorff
  • Python Scipy 距离矩阵余弦
  • Python 科学距离相关矩阵

Bijay Kumar MVPBijay Kumar

Python 是美国最流行的语言之一。我从事 Python 工作已经有很长时间了,我在与 Tkinter、Pandas、NumPy、Turtle、Django、Matplotlib、Tensorflow、Scipy、Scikit-Learn 等各种库合作方面拥有专业知识。我有与美国、加拿大、英国、澳大利亚、新西兰等国家的各种客户合作的经验。查看我的个人资料。

enjoysharepoint.com/

Scipy 查找峰值–有用的教程

原文:https://pythonguides.com/scipy-find-peaks/

Python & Machine Learning training courses

在这个 Python 教程中,我们将学习“ Scipy Find Peaks ”并借助各种例子讨论它的可用性。此外,涵盖以下主题。

  • 科学发现峰值
  • 科学发现了突出的顶峰
  • Scipy 查找峰值 cwt
  • 科学发现高峰和低谷
  • 科学发现峰值最小值
  • Scipy 发现峰宽

另外,查看最新的 Python Scipy 教程: Python Scipy 曲线拟合

目录

科学发现高峰

Python Scipy 在模块*scipy.signal*中有一个方法*find_peaks()*,它根据给定的峰值属性返回所有的峰值。峰值不仅仅是电信号的峰值,数学函数中的最大值和最小值也被认为是峰值。

下面给出了语法。

scipy.signal.find_peaks(x, height=1, prominence=4,  distance=2, width=2, threshold=1, rel_height=0.5, wlen=1, )

其中参数为:

  • x(序列): 用于接受需要寻找峰值的信号。
  • height (sequence,ndarray,number): 可能是一个整数,也可能是一个数组,用来设置待识别峰的最小高度。
  • threshold(sequence,ndarray,number): 一个峰值和它的邻居之间所需的垂直距离被称为阈值,当我们不想从噪声中挑出峰值时,它在噪声函数的情况下是非常有益的。
  • 距离(数): 是相邻山峰之间所需的最小水平距离(数)。在峰值周期已知的情况下,这是非常有价值的。
  • 日珥(sequence,ndarray,number): 用于提供峰值日珥。
  • 宽度(sequence,ndarray,number): 用于提供峰值的宽度。
  • wlen(int): 它用于计算日珥峰值。
  • rel_height(int): 用于计算峰高。

让我们以下面的步骤为例:

使用下面的 python 代码导入所需的库。

from scipy.signal import find_peaks
from scipy.misc import electrocardiogram
import matplotlib.pyplot as plt
%matplotlib inline

使用以下代码生成心电图。

value = electrocardiogram()[1000:5000]

现在使用下面的代码。

peak, _ = find_peaks(value, height=0)
plt.plot(value)
plt.plot(peak, value[peak], "*")
plt.plot(np.zeros_like(value), "--", color="green")
plt.show()

Scipy Find Peaks

Scipy Find Peaks

这就是如何使用 Python SciPy 的方法*find_peaks()*找到信号的峰值。

阅读: Scipy Misc + Examples

科学发现山峰突起

Python SciPy 有一个方法*peak_prominence()*,该方法计算峰值与其最低轮廓线之间的垂直距离,并与信号的周围基线进行比较。

下面给出了语法。

scipy.signal.peak_prominences(x, wlen=None, peaks)

其中参数为:

  • x(序列): 用于接受需要寻找峰值的信号。
  • wlen(int): 它用于指定采样窗口长度。
  • 峰值(序列):x 中的峰值指数

方法*peak_prominence()*返回 ndarray 类型的*prominences*(每个峰值)和 left-right bases

让我们以下面的步骤为例:

使用下面的 python 代码导入所需的库。

import numpy as np
import matplotlib.pyplot as plt
from scipy import signal
%matplotlib inline

使用下面的代码生成一个信号。

array_data = np.linspace(0, 5 * np.pi, 1100)
sig = np.sin(array_data) + 0.5 * np.sin(1.7 * array_data)

使用以下代码确定所有峰的显著性。

sig_peaks, _ = signal.find_peaks(sig)
promin = signal.peak_prominences(sig, sig_peaks)[0]
promin

现在使用下面的代码计算并绘制每个峰的轮廓线的高度。

contur_height = sig[sig_peaks] - promin
plt.plot(sig)
plt.plot(sig_peaks, sig[sig_peaks], "*")
plt.vlines(x=sig_peaks, ymin=contur_height, ymax=sig[sig_peaks])
plt.show()

Scipy Find Peaks Prominence

Scipy Find Peaks Prominence

这就是如何使用 Python SciPy 的方法*peak_prominences()*找到峰的日珥。

阅读:Scipy Sparse–有用的教程

Scipy 查找峰值 cwt

Python SciPy 有一个方法*find_peaks_cwt()*,它使用*Wavelet transformation*在一维数组中寻找峰值。但是 “什么是小波变换?” 使用一对滤波器将 N 个样本的信号分解成低频带和高频带。每个频带都是两倍欠采样,每个频带有 N/2 个样本。

下面给出了语法。

scipy.signal.find_peaks_cwt(vector, wavelet=None, widths, max_distances=None, window_size=None, gap_thresh=None, min_snr=0, min_length=None, noise_perc=9)

其中参数为:

  • vector(ndarray): 在一维数组中寻找波峰。
  • 小波(可调用): 取两个参数后,必须返回一个一维数组与向量进行卷积。第一个参数指定输出小波数组中的点数,而第二个参数指定小波的尺度。
  • widths(): 要计算 CWT 矩阵,请使用单一宽度或一维宽度数组。
  • 最大距离(ndarray): 仅当第[n]行的相对最大值在第[n+1]行的相对最大值的最大距离[n]内时,脊线在每一行都是连通的。
  • window _ size(int):要计算噪底,指定窗口的大小。
  • gap _ thresh(float):如果在最大距离内没有找到相对最大值,就会有间隙。如果超过 gap_thresh 点而没有新的相对最大值,脊线终止。
  • min_snr(浮点): 最小信噪比。
  • min_length(int): 一条脊线的最小长度必须是可接受的。
  • noise _ PERC(float):本底噪声是使用低于其噪声被考虑的数据点的百分比来计算的。

方法*find_peaks_cwt()*返回 te peak_indices

让我们通过下面的步骤来了解一个示例:

使用下面的 python 代码导入所需的库。

from scipy.signal import find_peaks_cwt
import numpy as np

使用下面的代码,使用方法*np.sin()*生成数组元素并在该数组上应用函数 sin。

x_data = np.arange(0, np.pi, 0.06)
sin_data = np.sin(x_data)

使用以下代码计算峰值指数或峰值。

peak_indices = signal.find_peaks_cwt(sin_data, np.arange(2,11))
peak_indices, x_data[peak_indices], sin_data[peak_indices]

Scipy Find Peaks cwt

Scipy Find Peaks cwt

这就是如何使用 Python SciPy 的方法*find_peaks_cwt*找到峰值。

阅读: Scipy 优化–实用指南

Scipy 发现峰宽

Python SciPy 有一个方法*peak_widths()*可以确定每个信号峰值的宽度。

下面给出了语法。

scipy.signal.peak_widths(x, rel_height=0.3, peaks, wlen=None, prominence_data=None)

其中参数为:

  • x(序列): 它用来接受信号。
  • wlen(int): 它用于指定采样窗口长度。
  • 峰值(序列):x 中的峰值指数
  • rel _ height(float):选择峰宽的相对高度,以其突出度的百分比表示。峰的宽度在其最低轮廓线处计算为 1.0,日珥高度的一半计算为 0.5。
  • prominence _ data(tuple):当用相同的参数 x 和 peaks 调用时,一个 3 数组的元组匹配 peak prominences 的结果。

方法*peak_widths()*返回 widths(样品峰宽)widths_height(用于计算宽度的轮廓线的高度。)**``right_ips, left_ips(各评价高度的水平线左右交点的插补位置)

让我们按照以下步骤来看一个例子:

使用下面的 python 代码导入所需的库。

import numpy as np
import matplotlib.pyplot as plt
from scipy import signal
%matplotlib inline

使用下面的代码生成一个信号。

array_data = np.linspace(0, 5 * np.pi, 1100)
sig = np.sin(array_data) + 0.5 * np.sin(1.7 * array_data)

使用以下代码确定所有峰的宽度。

sig_peaks, _ = signal.find_peaks(sig)
promin = signal.peak_prominences(sig, sig_peaks)[0]
promin

使用以下代码绘制信号、峰值和等高线的宽度。

plt.plot(sig)
plt.plot(sig_peaks, sig[sig_peaks], "*")
plt.hlines(*half_peak_res[1:], color="C4")
plt.hlines(*full_peak_res[1:], color="C5")
plt.show()

Scipy Finds Peak Width

Scipy Finds Peak Width

这就是如何使用 Python SciPy 的方法*peak_widths()*计算峰宽。

阅读:Python Scipy FFT【11 个有用的例子】

科学发现高峰和低谷

在 Python SciPy 中,没有内置的方法来查找信号的波峰和波谷,这里我们将使用模块scipy.signal中的方法*argrelextrema()*手动执行这项任务。

要找到信号流的波峰和波谷,请执行以下步骤:

使用下面的 python 代码导入所需的库。

import numpy as np
import matplotlib
import matplotlib.pyplot as plt
matplotlib.use('Agg')
from scipy.signal import argrelextrema
%matplotlib inline

使用下面的代码生成数据。

x_data = np.arange(start = 0, stop = 30, step = 1, dtype='int')
y_data = np.random.random(30)*5

使用下面的代码计算峰值。

peaks_ind = argrelextrema(y_data, np.greater)
peaks_ind = peaks_ind[0]

使用下面的代码计算山谷。

valleys_ind = argrelextrema(y_data, np.less)
valleys_ind = valleys_ind[0]

用我们使用下面的代码生成的峰值和谷值数据绘制图表。

(fig, ax) = plt.subplots()
ax.plot(x_data, y_data)

x_peak = peaks_ind
y_peak = y_data[peaks_ind]
ax.plot(x_peak, y_peak, marker='*', linestyle='dashed', color='orange', label="peaks")

x_valley = valleys_ind
y_valley = y_data[valleys_ind]
ax.plot(x_valley, y_valley, marker='*', linestyle='dashed', color='blue', label="Valleys")

Scipy Find Peaks and Valleys

Scipy Find Peaks and Valleys

这就是如何在 Python SciPy 中找到信号的波峰和波谷。

阅读:Scipy Linalg–实用指南

科学发现峰值最小值

我们已经学习了如何使用 Python Scipy 库的方法*find_peaks()*找到信号的峰值或最大值。但在这一部分,我们将找到给定信号的最小值或谷值。

要找到信号或给定数据的最小值,请遵循以下步骤:

使用下面的 python 代码导入所需的库。

import numpy as np
import matplotlib
import matplotlib.pyplot as plt
matplotlib.use('Agg')
from scipy.signal import argrelextrema

按照下面的代码,使用随机数据创建一个信号。

array_data = np.arange(start = 0, stop = 40, step = 1, dtype='int')
y_array_data = np.random.random(40)*5

使用下面的代码计算信号的最小值。

minima_ind = argrelextrema(y_array_data, np.less)
minima_ind = minima_ind[0]
minima_ind

用下面的代码在图上标出计算出的最小值。

(fig, ax) = plt.subplots()
ax.plot(array_data, y_array_data)

x_minima = minima_ind
y_minima = y_array_data[minima_ind]
ax.plot(x_minima, y_minima, marker='*', linestyle='dashed', color='green', label="Minima")

Scipy Find Peaks Minima

Scipy Find Peaks Minima

这就是如何使用 Python SciPy 的方法*argrelextrema()*找到信号或数据的最小值。

另外,看看更多的 Python Scipy 教程。

因此,在本教程中,我们学习了“ Scipy Find Peaks ”并涵盖了以下主题。

  • 科学发现峰值
  • 科学发现了突出的顶峰
  • Scipy 查找峰值 cwt
  • 科学发现高峰和低谷
  • 科学发现峰值最小值
  • Scipy 发现峰宽

Bijay Kumar MVPBijay Kumar

Python 是美国最流行的语言之一。我从事 Python 工作已经有很长时间了,我在与 Tkinter、Pandas、NumPy、Turtle、Django、Matplotlib、Tensorflow、Scipy、Scikit-Learn 等各种库合作方面拥有专业知识。我有与美国、加拿大、英国、澳大利亚、新西兰等国家的各种客户合作的经验。查看我的个人资料。

enjoysharepoint.com/

Scipy Integrate +示例

原文:https://pythonguides.com/scipy-integrate/

Python & Machine Learning training courses

在这个 Python 教程中,我们将学习“ Scipy Integrate ”,在这里我们将学习如何使用集成方法来解决集成问题。此外,我们还将讨论以下主题。

  • Scipy 集成
  • 科学整合辛普森
  • 立体整体梯形
  • Scipy 集成四路
  • Scipy 集成 Odeint
  • Scipy 集成求解 _Ivp
  • 积体积体芯片

目录

科学整合

Scipy 子模块*scipy.integrate*包含了许多解决 Python 中积分或微分方程相关问题的方法。它有一个预定义的函数和方法来解决积分或微分方程数学问题。

要了解这个子模块中可用的集成技术,请使用下面的代码。

from scipy import integrate
print(help(integrate))

Scipy integrate

Scipy integrate

在上面的输出中,当我们滚动浏览时,它显示了本模块中所有的积分或微分技术、方法和函数。

阅读:科学统计-完整指南

Scipy integrated trap zoid

*TrapeZoid*规则是一种积分技术,通过将总面积分成一个更小的梯形来计算曲线下的面积。它基于指定的轴集成给定的函数*y(x)*

下面给出了在 Python 中使用它的语法。

scipy.integrate.trapezoid(y, x=None, dx=1.0, axis=- 1)

其中参数为:

  • y(array_data): 表示我们要积分作为输入的数组。
  • x(array_data): 用于指定与 y 值相关的采样点。
  • dx(标量): 用于指定不使用*x*时采样点之间的间距。
  • 轴(int): 它定义了我们要在哪个轴上执行积分。

方法*trapezoid()*返回 float 类型的值*trapz*,该值是近似的整数值。

让我们以 Python 中的以下步骤为例:

导入所需的库。

from scipy.integrate import trapezoid

创建代表*y*数据的数组值,并将其传递给方法。

trapezoid([5,8,10])

Scipy Integrate Trapzoid

Scipy Integrate Trapzoid

通过应用梯形法则,输出显示积分值*15.5*

阅读: Scipy Misc + Examples

科学整合辛普森

Scipy 有一个计算积分近似值的方法*simpson()*。此方法存在于子模块*scipy.integrate*中。

下面给出了在 Python 中使用它的语法。

scipy.integrate.simpson(y, x=None, dx=1.0, axis=- 1, even='avg')

其中参数为:

  • y(array_data): 表示我们要积分作为输入的数组。
  • x(array_data): 用于指定与 y 值相关的采样点。
  • dx(标量): 用于指定不使用*x*时采样点之间的间距。
  • 轴(int): 它定义了我们要在哪个轴上执行积分。
  • 偶数(字符串): 用于指定两个结果平均值的梯形法则,第一个和最后一个区间。

让我们以下面的步骤为例:

导入所需的模块,如以下代码所示。

import numpy as np
from scipy.integrate import simpson

使用下面的代码创建一个数据和样本点的数组。

array_data = np.arange(5,15)
sample_pnt = np.arange(5,15)

使用下面的 Python 代码,通过方法*simpson()*计算积分。

simpson(array_data,sample_pnt)

Scipy Integrate Simpson

Scipy Integrate Simpson

输出显示数组的积分值,给定的采样点为85.5T3。

阅读: Scipy 旋转图像+示例

Scipy 集成四通道

Scipy 在子模块*scipy.integrate*中有一个方法*quad()*,它计算 Python 中从无限区间 a 到 b 的给定函数的定积分。

下面给出了语法。

scipy.integrate.quad(func, a, b, args=(), full_output=0)

其中参数为:

  • func(函数): 用于指定用于积分计算的函数。该函数可以是下列形式之一。
  1. 双功能(双 y)
  2. double func(double y,void *user_data)
  3. double func(int m,double *yy)
  4. double func(int m,double *yy,void *user_data)
  • (浮点): 用于指定积分的下限。
  • b(浮点): 用于指定积分的上限。
  • args(tuple): 如果我们想给一个函数传递额外的参数,那么就使用这个参数。
  • full _ output(int):非零值用于获取集成信息的字典。

该方法返回三个重要结果*y*整数值,*abserr*绝对误差的估计值,infodict包含附加信息的字典。

让我们以下面的步骤为例:

使用下面的 Python 代码导入所需的库。

from scipy.integrate import quad

使用 lambda 函数创建一个函数,并定义间隔,如下面的代码所示。

n3 = lambda n: n**3
a = 0
b = 5

现在使用下面的代码计算函数的积分。

quad(n3, a, b)

Scipy Integrate Quad

Scipy Integrate Quad

输出显示函数(n 的 3 次方)的定积分值为*156.25000*

阅读:Scipy Sparse–有用的教程

Scipy Integrate Odeint

Scipy 子模块*scipy.integrate*包含了整合常微分方程的方法*odeint()*

下面给出了在 Python 中使用它的语法。

scipy.integrate.odeint(func, y0, t, args=(), Dfun=None, col_deriv=0, full_output=0, printmessg=0)

其中参数为:

  • func: 它计算函数 y 在 t 的导数
  • y0(数组): 用于为 y 提供初始条件
  • t(数组): 它是一系列时间点
  • args: 用来给函数 y 提供额外的参数
  • Dfun: 用于一个函数的梯度。
  • col _ deriv(boolean):对于真值*Dfun*定义导数向下到列,否则为假时跨越到行。
  • print messg(boolean):用于打印汇聚报文。

该函数包含许多参数,但上面我们只解释了常见的参数。

方法*odient()*返回两个值y,它们是包含每个时间 t 的 y 值的数组,以及用于附加输出信息的*infodict*

让我们以下面的步骤为例:

导入所需的库。

from scipy.integrate import odeint
import matplotlib.pyplot as plt
import numpy as np

使用下面的代码定义等式。

def diff_model(y,t):
    k = 0.5
    dydt = -k * y
    return dydt

使用下面的代码创建一个初始条件。

y0 = 3

使用下面的代码创建一系列时间点。

t = np.linspace(0,15)

通过使用下面的代码提供参数来求解创建的方程。

y = odeint(diff_model,y0,t)

现在用下面的代码画出解决方案。

plt.plot(t,y)
plt.xlabel('time')
plt.ylabel('y(t)')
plt.show()

Scipy Integrate Odeint

Scipy Integrate Odeint

这就是如何积分常微分方程。

阅读:科学常数

Scipy Integrate Solve_Ivp

Scipy 有一个方法*solve_ivp()*,它根据提供的初始值整合一个常微分方程系统。

下面给出了在 Python 中使用它的语法。

scipy.integrate.solve_ivp(fun, t_span, y0, method='BDF', t_eval=None, dense_output=False, events=None, vectorized=True, args=None)

其中参数为:

  • fun(可调用): 它在系统的右手边。调用函数的签名是 fun(x,z ),其中 x 表示标量,z 是以两种方式表示形状的数组。
  • t_span(二元组浮点): 表示从 T0 到 T1 积分的区间。
  • y0(array _ data like shape(n)):用于指定初始状态。
  • 方法(string 或 odsolver): 用于指定使用哪种积分方法,如 RK45、Radau、RK23、DOP853、BDF、LSODA。
  • t _ eval(array _ data):用于指定存储计算出的解的时间。
  • dense _ output(boolean):用于指定我们是否要计算连续解。
  • 事件(可调用): 用于跟踪事件。
  • 矢量化(布尔): 用于指定我们是否要以矢量化的方式实现函数。
  • args(tuple): 传递多余的参数。

该函数返回包含许多值的 bunch 对象,但它有两个重要的值,即 y 和 t。

让我们以下面的步骤为例:

使用下面的 python 代码导入所需的库。

from scipy.integrate import solve_ivp

使用下面的代码创建一个指数衰减函数。

def exp_decay(t, y): return -1.0 * y

现在使用下面的代码对指数衰减函数应用方法*solve_ivp()*

solution = solve_ivp(exp_decay, [5, 15], [4, 6, 10])

检查存储在解决方案中的*t*值。

solution.t

检查存储在解决方案中的*y*值。

solution.y

Scipy Integrate Solve_Ivp

Scipy Integrate Solve_Ivp

这就是如何根据提供的初值积分一个常微分方程组。

阅读: Scipy 优化–实用指南

Scipy 积分累计

*cumtrapez*该规则是一种积分技术,借助梯形规则对给定函数 y(x)进行累积积分。

下面给出了语法。

scipy.integrate.cumtrapz(y, x=None, dx=1.0, axis=- 1, intial=None)

其中参数为:

  • y(array_data): 表示我们要积分作为输入的数组。
  • x(array_data): 用于指定与 y 值相关的采样点。
  • dx(标量): 用于指定不使用*x*时采样点之间的间距。
  • 轴(int): 它定义了我们要在哪个轴上执行积分。
  • 初始值(标量): 用来给函数提供初始值。

方法*trapezoid()*返回 ndarray 类型的值*res*

让我们以下面的步骤为例:

使用下面的 python 代码导入所需的库。

from scipy.integrate import cumtrapz
import numpy as np

使用下面的代码创建变量【sample _ pts】作为样本点,创建变量 y ³ 用于积分。

sample_pts = np.arange(5, 30)
y_func = np.power(sample_pts, 3)

使用下面的代码对函数使用方法*cumtrapz()*

cumtrapz(y_func,sample_pts)

Scipy Integrate CumTrapz

Scipy Integrate CumTrapz

这就是如何用方法*cumtrapz()*积分给定函数。

另外,看看更多的 SciPy 教程。

在本教程中,我们已经了解了" Scipy Integrate "并且我们还讨论了以下主题。

  • Scipy 集成
  • 科学整合辛普森
  • 立体整体梯形
  • Scipy 集成四路
  • Scipy 集成 Odeint
  • Scipy 集成求解 _Ivp
  • 积体积体芯片

Bijay Kumar MVPBijay Kumar

Python 是美国最流行的语言之一。我从事 Python 工作已经有很长时间了,我在与 Tkinter、Pandas、NumPy、Turtle、Django、Matplotlib、Tensorflow、Scipy、Scikit-Learn 等各种库合作方面拥有专业知识。我有与美国、加拿大、英国、澳大利亚、新西兰等国家的各种客户合作的经验。查看我的个人资料。

enjoysharepoint.com/

scipy Linalg–有用的指南

原文:https://pythonguides.com/scipy-linalg/

Python & Machine Learning training courses

在这个 Python 教程中,我们将学习“ Scipy Linalg ”。在这里我们将学习如何解决线性代数问题。此外,我们还将讨论以下主题。

  • Scipy Linalg
  • Scipy Linalg(科学怪人)
  • 西比·林格尔
  • Scipy Linalg Lu
  • Scipy Linalg Svd.
  • Scipy Linalg Solve
  • Scipy Linalg Qr
  • Scipy Linalg Inverse
  • Scipy Linalg Norm
  • 西皮·里纳尔格·乔莱斯基

目录

Scipy Linalg

Python Scipy 中的*scipy.linalg*模块用于解决线性代数问题。我们可以使用这个库来解决方程、矩阵、特征值和特殊的矩阵问题等。

它有多种解决线性代数问题的方法。*linalg*库中的所有方法被分成以下几个部分:

  • 特征值问题
  • 矩阵函数
  • 基础
  • 分解
  • 草图和随机投影
  • 低级例程
  • 矩阵方程求解器
  • 特殊矩阵

在接下来的小节中,我们将学习模块*scipy.linalg*最常见的方法。

西比林藻卵

Python Scipy 在模块*scipy.linalg*中有一个方法*eig()*来处理常见的特征值问题。

下面给出了语法。

scipy.linalg.eig(a, b=None, right=False, left=True, overwrite_a=True, overwrite_b=True, check_finite=False, homogeneous_eigvals=True)

其中参数为:

  • a(array_data): 提供实矩阵或复矩阵作为计算特征向量和特征值的输入。
  • b(array_data): 输入右侧矩阵。
  • 右(布尔): 计算并得到右特征向量。
  • 左(布尔): 计算并得到左特征向量。
  • 覆盖 _a(布尔): 覆盖*a*
  • 覆盖 _b(布尔): 覆盖*b*
  • check _ finite(boolean):检查提供的作为输入的矩阵是否有有限个数字。
  • 【齐次 _ 特征值(布尔): 获取齐次坐标中的特征值

方法*eig()*返回复数 ndarray 或 double 类型的 w(特征值)vr(规范化的右向量)vl(规范化的左向量)

让我们以下面的步骤为例:

使用下面的 python 代码导入所需的库。

import numpy as np
from scipy.linalg import eig

使用下面的代码创建一个矩阵形式的数据数组。

mat_data = np.array([[-1.,0],[0.2,1]])

使用以下代码将创建的矩阵数据传递给方法eig()

eig(mat_data)

Scipy Linalg Eig

Scipy Linalg Eig

这就是如何使用 Python Scipy 的方法*eig()*计算特征值和特征向量。

阅读: Scipy 卷积器

草履虫八号】T1

Python Scipy 在模块*scipy.linalg*中有一个方法*eigh()*来处理实对称或厄米矩阵的标准普通特征值问题。

下面给出了语法。

scipy.linalg.eigh(a, b=None, eigvals_only=True, lower=False, overwrite_a=True, overwrite_b=True, turbo=False, eigvals=None, type=1, check_finite=False, subset_by_index=None, subset_by_value=None, driver=None)

其中参数为:

  • a(array_data): 提供实矩阵或复矩阵作为计算特征向量和特征值的输入。
  • b(array_data): 输入右侧矩阵。
  • lower(bool): 相关数组的数据是从 a 的下三角还是上三角中选取的
  • egvals _ only(boolean):只计算特征值,不计算特征向量。默认情况下,两者都是经过计算的。
  • 覆盖 _a(布尔): 覆盖*a*
  • 覆盖 _b(布尔): 覆盖*b*
  • check _ finite(boolean):检查提供的作为输入的矩阵是否有有限个数字。
  • subset _ by _ index(iterable):使用可迭代的二元定义开始和结束特征值索引。
  • subset _ by _ value(iterable):用一个可迭代的二元来定义半区间只求特征值。

方法*eigh()*以 ndarray 类型的递增大小返回 w(选定的特征值)

让我们按照下面的步骤举例:

使用下面的 python 代码导入所需的库。

import numpy as np
from scipy.linalg import eigh

使用下面的代码创建一个矩阵形式的数据数组。

matrix_data = np.array([[5, 3, 6, 1], [5, 1, 3, 0], [2, 6, 5, 1], [1, 5, 2, 2]])

使用以下代码将创建的矩阵数据传递给方法*eigh()*

eigh(matrix_data)

Scipy Linalg Eigh

Scipy Linalg Eigh

这就是如何使用 Python Scipy 的方法*eigh()*计算特征值。

阅读: Scipy Ndimage Rotate

Scipy Linalg Lu

Python Scipy 在模块*scipy.linalg*中有一个方法*lu()*来计算矩阵的旋转 Lu 分解。

下面给出了语法。

scipy.linalg.lu(a, permute_l=True, check_finite=False, overwrite_a=True,)

其中参数为:

  • a(数组 _ 数据): 对数组进行分解。
  • permute_l(布尔): 做乘法
  • 覆盖 _a(布尔): 覆盖a
  • check _ finit(boolean):检查提供的作为输入的矩阵是否有有限个数字。

方法返回 p(置换矩阵)l(下三角) , ***u(上三角)*permute_l equal to false*pl(置换 L 矩阵) , ***u(上三角) **`permute_l equal to true`````

让我们通过下面的步骤来了解一个示例:

使用下面的 python 代码导入所需的库。

import numpy as np
from scipy.linalg import lu

使用下面的代码创建一个数据数组。

array_data = np.array([[8, 7, 2, 5], [2, 8, 5, 2], [6, 6, 5, 7], [4, 5, 8, 4]])

使用下面的代码将创建的数据数组传递给方法*lu()*

permute_mat,lower_tri,upper_tri = lu(array_data)

print('Permutation matrix',permute_mat)
print('Lower triangular',lower_tri)
print('Upper triangular',upper_tri)

Scipy Linalg Lu

Scipy Linalg Lu

查看输出,结果是*Permutaton matrix**Lower triangular**Upper triangular*

这就是如何使用*lu() for Lu decomposition of a* 矩阵的方法。

阅读: Scipy 正态分布

Scipy Linalg Svd

Python Scipy 在模块*scipy.linalg*中有一个方法*svd()*用于奇异分解值。

下面给出了语法。

scipy.linalg.svd(a, compute_uv=False, full_matrices=False, overwrite_a=True, check_finite=False, lapack_driver='gesdd')

其中参数为:

  • a(array_data): 是用于分解的矩阵。
  • compute_uv(布尔): 计算除 s 之外的 v 和 uh
  • full _ matrix(布尔): 对于真值,v 和 uh 的形状为(M,M) (N,N),对于假值,形状为(M,K)和(K,N)。
  • 覆盖 _a(布尔): 覆盖a
  • check _ finite(boolean):检查提供的作为输入的矩阵是否有有限个数字。
  • lapack_driver(gesvd,gesdd): 使用更高效的通用矩形方法或分治方法。

方法*svd()*返回 ndarray 类型的 U(酉矩阵的左奇异向量)s(奇异值)vh(酉矩阵的右奇异向量)

让我们以下面的步骤为例:

使用下面的 python 代码导入所需的库。

from numpy.random import default_rng
from scipy.linalg import svd

使用随机生成器 default_rng 通过下面的代码生成一个数据数组。

random_numgen = default_rng()
m, n = 12, 8
array_data = random_numgen.standard_normal((m, n)) + 1.j*random_numgen.standard_normal((m, n))

使用下面的代码对数据数组执行 svd。

U, s, Vh = svd(array_data)
print("left singular vectors of Unitary matrix",U.shape)
print("singular values",s)
print("right singular vectors of Unitary matrix",Vh.shape)

Scipy Linalg Svd

Scipy Linalg Svd

这就是如何使用方法*svd()*对数组进行奇异分解。

阅读: Scipy Stats Zscore

Scipy Linalg Solve

Python Scipy 在模块*scipy.linalg*中有一个方法*solve()*来处理与线性方程相关的问题,例如*ax = b*,这意味着这个方程是为方阵*a*的值*x*求解的。

下面给出了语法。

scipy.linalg.solve(a, b, overwrite_a=True, lower=True, debug=None, overwrite_b=True, sym_pos=True, assume_a='gen', check_finite=False, transposed=True)

其中参数为:

  • (array _ data):接受方形数据作为输入。
  • b(array_data):输入数据的右边。
  • lower(bool): 相关数组的数据是从 a 的下三角还是上三角中选取的
  • 覆盖 _a(布尔): 覆盖 a
  • 覆盖 _b(布尔): 覆盖*b*
  • check _ finite(boolean):检查提供的作为输入的矩阵是否有有限个数字。
  • sym _ post(boolean):而不是*sym_pos*使用参数*assume_a = pos*,因为*sym_pos*已经折旧。该参数认为参数*a*提供的值是非对称正定的。
  • 它应该包含什么 值在上面的参数中有解释。
  • 转置(布尔): 如果为真,则a转置,如*a*T x = b*

*方法solve返回 ndarray 类型的 x(这是一个解数组) 和发生的错误。

让我们以下面的步骤为例:

使用下面的 python 代码导入所需的库。

from scipy.linalg import solve
import numpy as np

给定 x 和 y 的值,找出 z 的值,首先,使用下面的代码创建 x 和 y 的数据数组。

x = np.array([[4, 3, 0], [2, -2, 0], [1, 0, 5]])
y = np.array([1, 3, -4])

使用下面的代码求解 z 的 x 和 y。

solve(x,y)

Scipy Linalg Solve

Scipy Linalg Solve

这就是如何用*solve()*的方法解决线性方程问题。

读取:敏感信号

Scipy Linalg Qr

我们将讨论矩阵的 QR 分解或 QR 分解。QR 分解是矩阵的分解,例如“A”分解成“A=QR”,其中 R 是上三角矩阵,Q 是正交的。我们用 Python SciPy 方法*scipy.linalg.qr()*函数分解矩阵。

下面给出了语法。

scipy.linalg.qr(a, overwrite_a=True, lwork=None, mode='full', pivoting=True, check_finite=False)

其中参数为:

  • a(array_data): 输入我们要分解的矩阵。
  • 覆盖 _a(布尔): 覆盖a
  • check _ finite(boolean):检查提供的作为输入的矩阵是否有有限个数字。
  • lwork(int): 工作数组的大小,lwork >= a.shape[1]。如果未指定或指定了-1,则确定最佳大小。
  • 模式: 确定将同时返回 Q 和 R ('full ',这是默认值),仅返回 R ('r '),或者同时返回 Q 和 R,但按经济规模计算。
  • 旋转(布尔): 旋转是否应该包含在因子分解中以进行等级揭示 qr 分解。如果旋转,如上所述进行分解*A P = Q R*,但是选择 P,使得 R 的对角线不增加。

该方法返回 ndarray 或 float 或 int 类型的 Q(其形状为 M,M)R(M,N 的形状)P(N 的形状)

让我们以下面的步骤为例:

使用下面的 python 代码导入所需的库。

import numpy as np
from scipy.linalg import qr

创建一个随机数生成器的对象,并使用下面的代码从正态分布中生成一个样本。

random_gen = np.random.default_rng()
data = random_gen.standard_normal((7, 5))
data

对数据执行qr并使用以下代码检查形状。

shape_q, shape_r = qr(data)
print('Shape of q',shape_q.shape)
print('Shape of r',shape_r.shape)

Scipy Linalg Qr

Scipy Linalg Qr

这就是如何使用 Python Scipy 的方法*qr()*进行 QR 分解。

阅读: Scipy Misc + Examples

Scipy Linalg inverse

Python SciPy 在模块*sicpy.linalg*中包含一个方法*inv()*,用于确定矩阵的逆矩阵。

下面给出了语法。

scipy.linalg.inv(a, overwrite_a=True, check_finite=False)

其中参数为:

  • a(array_data): 输入我们要求逆的矩阵。
  • 覆盖 _a(布尔): 覆盖a
  • check _ finite(boolean):检查提供的作为输入的矩阵是否有有限个数字。

方法*inv()*返回 inv(矩阵的逆)

让我们以下面的步骤为例:

使用下面的代码导入所需的库。

from scipy.linalg import inv
import numpy as np

创建一个矩阵,并用下面的代码求逆。

mat = np.array([[2., 1.], [4., 3.]])
inv(mat)

Scipy Linalg Inverse

Scipy Linalg Inverse

这就是如何使用 Python SciPy 的方法*inv()*对给定矩阵求逆。

阅读:Scipy Sparse–有用的教程

Scipy Linalg Norm

Python SciPy 有一个从 8 种不同形式返回矩阵范数的方法norm()

下面给出了语法。

scipy.linalg.norm(a, axis=None, ord=None, check_finite=True,  keepdims=True)

其中参数为:

  • a(array_data): 输入的数组除非 ord 为 None,否则 axis 必须为 None,a 必须为 1 维或 2 维,如果 axis 和 ord 都为 None,则返回 a.ravel 2-norm。
  • 轴(2 元组的 int,int): 如果轴是整数,则指定要计算向量范数的轴。如果轴是二元组,则指定保存二维矩阵的轴,并计算这些矩阵的矩阵范数。
  • ord(int,inf): 用于提供定额订单。
  • check _ finite(boolean):检查提供的作为输入的矩阵是否有有限个数字。
  • keepdims(布尔): 如果设置为真,则被赋范的轴作为尺寸为 1 的尺寸留在结果中。

方法*norm()*返回给定矩阵的范数。

让我们以下面的步骤为例:

使用下面的 python 代码导入所需的库。

from scipy.linalg import norm
import numpy as np

创建一个矩阵形式的数据数组,将使用下面的代码计算其范数。

array_data = np.arange(8) - 3.0
array_data

使用下面的代码计算上面创建的矩阵或数据数组的范数。

norm(array_data)

Scipy Linalg Norm

Scipy Linalg Norm

这就是如何使用 Python SciPy 的方法*norm()*计算给定矩阵的范数。

阅读: Scipy 优化–实用指南

斯皮·里纳尔格·乔莱斯基

Python SciPy 有一个方法*cholesky()*,它返回埃尔米特正定矩阵 A 的乔莱斯基分解*A=LL or A=UU*

下面给出了语法。

scipy.linalg.cholesky(a, lower=True, overwrite_a=True, check_finite=False)

其中参数为:

  • a(数组 _ 数据): 对数组进行分解。
  • **lower(bool):**相关数组的数据是从 a 的下三角还是上三角中选取的
  • 覆盖 _a(布尔): 覆盖a
  • check _ finite(boolean):检查提供的作为输入的矩阵是否有有限个数字。

方法*cholesky()*返回 ndarray 类型的c(上三角形或下三角形的 Cholesky 因子)。

让我们以下面的步骤为例:

使用下面的 python 代码导入所需的库。

from scipy.linalg import cholesky
import numpy as np

使用下面的代码创建一个矩阵。

m = np.array([[2,-1j],[2j,2]])

使用下面的代码计算矩阵的 Cholesky。

cholesky(m,lower = True)

Scipy Linalg Cholesky

Scipy Linalg Cholesky

这是如何使用 Python SciPy 的方法*cholesky()*计算给定矩阵的 Cholesky。

另外,看看更多的 Scipy 教程。

因此,在本教程中,我们已经了解了" Scipy Linalg "并涵盖了以下主题。

  • Scipy Linalg
  • Scipy Linalg(科学怪人)
  • scipy linalg 号文件。
  • Scipy Linalg Lu
  • Scipy Linalg Svd.
  • Scipy Linalg Solve
  • Scipy Linalg Qr
  • Scipy Linalg Inverse
  • Scipy Linalg Norm
  • 西皮·里纳尔格·乔莱斯基

Bijay Kumar MVPBijay Kumar

Python 是美国最流行的语言之一。我从事 Python 工作已经有很长时间了,我在与 Tkinter、Pandas、NumPy、Turtle、Django、Matplotlib、Tensorflow、Scipy、Scikit-Learn 等各种库合作方面拥有专业知识。我有与美国、加拿大、英国、澳大利亚、新西兰等国家的各种客户合作的经验。查看我的个人资料。

enjoysharepoint.com/*

Scipy 杂项+示例

原文:https://pythonguides.com/scipy-misc/

Python & Machine Learning training courses

在这个 Python 教程中,我们将学习“ Scipy Misc 并讨论与之相关的多个例子。此外,我们将讨论以下主题。

  • Scipy Misc
  • Scipy 杂项信息
  • Scipy Misc imsave
  • Scipy Misc toimage
  • Scipy 杂项衍生物
  • Scipy Misc imresize
  • Scipy 杂项梳
  • Scipy 杂项上升
  • Scipy 杂项脸
  • Scipy 杂项因子

目录

Scipy Misc

Scipy 中有一个模块*scipy.misc*也就是*Miscellaneous routines*,它有不同的不属于任何特定模块的实用程序或方法。

它有五种不同用途的五种方法,如下所示。

  • 【central _ diff _ weights():求给定中心导数的 Np-点的权重。
  • face(): 返回浣熊脸,大小为 1024 x 768。
  • ascent(): 它返回大小为 512 x 512 的 8 位灰度位深度,这是用于演示目的的派生图像。
  • 【心电图(): 用于加载心电图作为一维信号。
  • 导数(): 返回给定函数在某一点的第 n 阶导数。

在本教程的后面,我们将分别学习上述方法。

另外,检查:科学常数

科学杂项信息

Scipy 版本 1.2.0 中删除了用于从文件中读取图像的 Scipy 方法*imread()*。该方法存在于另一个名为*imageio*的库中。所以在这里我们将安装这个库并读取一个图像。

下面给出了语法。

imageio.imread(file_path)

其中*file_path*是我们想要读取的图像的路径。

打开一个新的 Jupiter 笔记本或使用 cmd 在计算机上安装库,如下所示步骤:

!pip install imageio

使用下面的代码导入库。

import imageio
import matplotlib.pyplot as plt
%matplotlib inline

使用imread()方法读取图像。

image = imageio.imread('keith_tanner.jpg')

上面的代码包含从指定路径读取图像并返回该图像的 ndarray 的方法*imread()*

现在使用下面的代码,使用子模块*matplotlib.pyplot*的方法*imshow()*查看图像。

plt.figure(figsize=(5,5))
plt.imshow(image) 
plt.axis('off')
plt.show()

Scipy Misc imread

Scipy Misc imread

这是如何使用方法imread读取图像。

阅读: Scipy 优化

Scipy Misc imsave

用于将图像从数组保存到文件的 Scipy 方法*imsave()*已从 Scipy 版本 1.2.0 中删除。存在于另一个库*imageio*中的方法imwrite()被用来代替那个方法。

下面给出了语法。

imageio.imwrite(uri,array_data,format)

其中参数为:

  • uri(string): 是我们要保存的文件的名称。
  • array_data: 它是一幅图像的数组值。
  • 格式(字符串): 用于指定我们要读取的图像的格式。

让我们以下面的步骤为例:

使用下面的代码导入所需的库。

import numpy as np
import imageio

使用元组创建行和列,如下面的代码所示。

row, col = (10,10)

使用定义的行和列创建数组。

array_data = np.zeros((row,col))

使用下面的代码创建一个图像。

 image = imageio.imwrite('creating_img.png',array_data)

Scipy Misc imsave

Scipy Misc imsave

上面的代码用零值创建了 64 字节的图像。

阅读: Scipy 稀疏

Scipy Misc toimage

Scipy 版本 1.2.0 中删除了用于从数组创建映像的 Scipy 方法*toread()*。存在于另一个库*PIL*中的方法*PIL.mage.fromarray()*被用来代替那个方法。

下面给出了语法。

image.fromarray(obj)

其中参数为:

  • obj: 它是一个包含图像值的数组。

让我们通过一个使用以下步骤的示例来理解:

首先,安装库PIL因为这里我们要在 Jupyter 笔记本中安装库。

!pip install Pillow

使用下面的代码导入所需的库。

from PIL import Image
import matplotlib.pyplot as plt
import numpy as np
%matplotlib inline

打开任何图像并将其转换为数组。

img = Image.open("severin_candrian.jpg")
array = np.array(img)

使用下面的代码从上面的数组创建一个 PIL 图像。

pilimage=Image.fromarray(array)

使用下面的代码查看图像。

plt.figure(figsize=(5,5))
plt.imshow(pilimage) 
plt.axis('off')
plt.show()

Scipy Misc toimage

Scipy Misc toimage

这是如何从一个给定的数组创建一个图像。

阅读:剪切旋转图像

科学杂项导数

Scipy 模块*misc*包含一个方法*derivative()*,用于查找给定函数在某一点的 n 阶导数。

下面给出了语法。

scipy.misc.derivative(func, x0, dx=1.0, n=1, args=(), order=3)

其中参数为:

  • func: 就是我们要求其 n 阶导数的函数。
  • x0(浮点): 用于指定求导的点。
  • dx(浮点): 用来指定间距。
  • n(int): 用于指定导数的阶。
  • args(tuple): 它用来提供自变量。
  • (int):用来指定要使用的点数。

让我们以下面的代码为例。

from scipy.misc import derivative
def fun(x):
    return x`4 + x`3
derivative(fun, 1.0, dx=1e-7)

Scipy Misc derivative

Scipy Misc derivative

阅读: Scipy Integrate +示例

Scipy Misc imresize

模块*scipy.misc*中的方法*imresize()*在 Scipy 版中已被弃用。这里我们可以用库枕的方法*resize()*来代替方法*imresize()*

下面给出了语法。

image.resize(size)

其中参数*size*获取我们想要调整大小的图像的像素大小。

让我们以下面的步骤为例:

使用下面的代码导入库*pillow*的模块*image*

import PIL.Image as img
import matplotlib.pyplot as plt

使用下面的代码打开任何我们想要调整大小的图像。

imz = img.open('lesly_derksen.jpg')

使用下面的代码查看和检查图像的大小。

plt.imshow(imz)
imz.size

Scipy Misc imresize

Scipy Misc imresize

为图像定义新的大小,如下面的代码所示。

new_size = (300,300)

让我们使用下面的代码来减小图像的大小。

imz1= imz.resize(new_size)

现在使用下面的代码来查看缩小后的图像。

plt.imshow(imz1)
imz1.size

Scipy Misc imresize example

Scipy Misc imresize example

阅读: Scipy 信号-有用教程

Scipy 杂项梳

模块*scipy.misc*中的方法*comb()*在 Scipy 版中已被弃用。该方法已经转移到另一个名为*scipy.special*的模块中。这个方法是用来求 k 时刻取的 n 个东西的组合数的。

下面给出了语法。

scipy.special.comb(N, k, exact=False, repetition=False)

其中参数为:

  • N(ndarray 或 int): 用来指定事物的数量。
  • K(ndarray 或 int): 用于指定取的元素个数。
  • exact(boolean): 当其为真时,使用长整数算法计算正确的解,否则以浮点计算近似解。
  • 重复(bool): 如果为真,那么它计算有重复的组合数。

让我们以下面的代码为例。

from scipy.special import comb
k_time = np.array([6, 7])
n_things = np.array([15, 15])
comb(n_things, k_time, exact=False)

Scipy Misc comb

Scipy Misc comb

阅读: Scipy 卷积-完整指南

科学杂项上升

Scipy 模块 misc 包含另一个方法*ascent()*来获取大小为 512×512 的派生图像的 8 位灰度位深度。

下面给出了语法。

scipy.misc.ascent()

出于演示目的,该方法返回*ascent*类型的 ndarray 图像。

让我们以下面的代码为例。

import scipy.misc as f
import matplotlib.pyplot as plt

asc = f.ascent()
plt.imshow(asc)

Scipy Misc ascent

Scipy Misc ascent

Scipy Misc face

Scipy 模块 misc 包含另一个方法face()来获得大小为 1024×768 的彩色浣熊脸。

下面给出了语法。

scipy.misc.face(gray=False)

其中参数为:

gray(布尔): 为真时返回 8 位灰度图像,否则返回彩色图像。

让我们按照下面的步骤举个例子。

导入必要的文件。

import scipy.misc as f
import matplotlib.pyplot as plt

使用下面的代码生成浣熊脸。

racoon_face = f.face()

使用下面的代码显示生成的图像。

plt.imshow(racoon_face)

Scipy Misc face

Scipy Misc face

科学杂项阶乘

模块*scipy.misc*中的方法*factorial()*在 Scipy 版中已被弃用。该方法已经转移到另一个名为*scipy.special*的模块中。此方法用于查找数组中包含的一个数字或所有元素的阶乘。

下面给出了语法。

scipy.special.factorial(n, exact=False)

其中参数为:

n(int 或 array): 是我们要求其阶乘的数字或数字数组。

exact(boolean): 当其为真时,使用长整数算法计算正确的解,否则以浮点计算近似解。

让我们举一个例子,用下面的步骤计算一个数组中所有元素的阶乘。

使用下面的代码导入所需的库。

from scipy.special import factorial
import numpy as np

使用下面的方法创建一个数组并将其传递给方法*factorial()*

array = np.array([5, 6, 7])
factorial(array, exact=False)

Scipy Misc factorial

Scipy Misc factorial

因此,在本教程中,我们已经了解了" Scipy Misc "并涵盖了以下主题。

  • Scipy Misc
  • Scipy 杂项信息
  • Scipy Misc imsave
  • Scipy Misc toimage
  • Scipy 杂项衍生物
  • Scipy Misc imresize
  • Scipy 杂项梳
  • Scipy 杂项上升
  • Scipy 杂项脸
  • Scipy 杂项因子

Bijay Kumar MVPBijay Kumar

Python 是美国最流行的语言之一。我从事 Python 工作已经有很长时间了,我在与 Tkinter、Pandas、NumPy、Turtle、Django、Matplotlib、Tensorflow、Scipy、Scikit-Learn 等各种库合作方面拥有专业知识。我有与美国、加拿大、英国、澳大利亚、新西兰等国家的各种客户合作的经验。查看我的个人资料。

enjoysharepoint.com/

posted @ 2024-11-02 15:54  绝不原创的飞龙  阅读(9)  评论(0编辑  收藏  举报