机器学习代码分析

创建一个9维的零向量

np.zeros(9)	# array([0., 0., 0., 0., 0., 0., 0., 0., 0.])

eval()

将字符串两边的引号去掉

eval()是Python内置函数,可以将字符串作为Python表达式求值并返回结果。

语法:eval(expression[, globals[, locals]])

参数:

  • expression:必选参数,表示要求值的Python表达式,可以是字符串或者code对象。
  • globals:可选参数,表示全局命名空间,如果提供,则必须是一个字典对象。
  • locals:可选参数,表示局部命名空间,如果提供,则必须是一个字典对象。

返回:
eval()函数会返回表达式的值。

使用方法示例:

a = 3
b = 4
result = eval('a + b')
print(result)  # 输出为7

注意,eval()函数可以执行任意Python代码,因此应该避免将未知的字符串传递给eval()函数,或者对传递给eval()函数的字符串进行一定的过滤和验证,以确保安全性。

pandas的apply

apply是Pandas DataFrame和Series的一个函数,用于在整个对象或选定的行或列上应用一个指定的函数。其语法为:

DataFrame.apply(func, axis=0, raw=False, result_type=None, args=(), **kwds)

其中,func是要应用的函数,axis是函数应用的轴(0表示按列,1表示按行),raw表示是否将numpy数组传递给函数中的funcresult_type表示返回的结果类型,argskwds是可选参数,可以传递给函数func

例如,可以使用apply计算DataFrame中每一行的和:

df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
df.apply(lambda x: x.sum(), axis=1) # 计算每一行的和

还可以使用apply将DataFrame中的某个列转换成另一种形式,例如将字符串列转换为数值列:

df = pd.DataFrame({'A': ['1', '2', '3'], 'B': [4, 5, 6]})
df['A'] = df['A'].apply(lambda x: int(x)) # 将A列转换为int类型

numpy的vstack

numpy.vstack将一系列的数组沿着垂直方向(行方向)堆叠起来,返回一个新的数组。其语法为:

numpy.vstack(tup)

其中,tup是要堆叠的数组序列,可以是元组、列表或者其他序列。

例如,可以使用vstack将两个数组按行方向堆叠起来:

import numpy as np

a = np.array([[1, 2], [3, 4]])
# array([[1, 2],
#        [3, 4]])
b = np.array([[5, 6]])
# array([[5, 6]])
c = np.vstack((a, b))

print(c)
# 输出:
# [[1 2]
#  [3 4]
#  [5 6]]

在这个例子中,我们先定义了两个数组ab,然后使用vstack将它们按行方向堆叠起来,得到一个3行2列的新数组c。可以发现,b数组在堆叠时被认为是一个2维数组,即使它只有1行。如果需要将它作为1维数组来处理,可以使用numpy.newaxis来扩展一维,例如:

b = np.array([5, 6])
c = np.vstack((a, b[np.newaxis, :]))

print(c)
# 输出:
# [[1 2]
#  [3 4]
#  [5 6]]

这里使用b[np.newaxis, :]将原来的1维数组变成了一个2维数组。

这里的一维数组和二维数组有什么区别

在Numpy中,一维数组和二维数组(也称为矩阵)是有区别的:

  • 一维数组是一个简单的数组序列,每个元素都是一个标量(即一个数字、字符串或其他基本类型)。一维数组通常用于表示一组数据,例如一个时间序列或者一组观测值。
  • 二维数组是一个矩阵,具有两个轴(即行轴和列轴)。每个元素都是一个标量,即一个数字、字符串或其他基本类型。通常用于表示一组数据表,每行表示一个样本,每列表示一个特征。

在代码中,一维数组可以定义为:

import numpy as np
a = np.array([1, 2, 3])

而二维数组可以定义为:

import numpy as np
b = np.array([[1, 2, 3],
              [4, 5, 6]])

在Numpy中,一维数组也可以看作是特殊的二维数组。对于一个一维数组,其shape属性只有一个元素,表示数组的长度。例如,上面定义的a数组的shape为(3,),表示它有3个元素。可以使用reshape方法将一个一维数组变成一个二维数组,例如:

import numpy as np
a = np.array([1, 2, 3])
b = a.reshape((1, 3))
print(b)  # 输出[[1 2 3]]

在这个例子中,我们将数组a变成了一个1行3列的二维数组b。需要注意的是,在Numpy中,对于一个多维数组,reshape方法不会改变它的元素顺序,只会改变它的维度。

pandas的concat

pandas的concat()函数用于将两个或多个DataFrame或Series对象沿着一条轴(行或列)进行连接。concat()函数接受以下参数:

  • objs: 要连接的DataFrame列表或Series列表
  • axis: 要连接的轴(0表示行,1表示列)
  • join: 连接方式(inner表示内连接,outer表示外连接)
  • ignore_index: 是否忽略原始索引,将新的索引值分配给结果DataFrame
  • keys: 用于建立分层索引的标签列表

示例代码:

import pandas as pd

# 创建两个DataFrame
df1 = pd.DataFrame({'A': ['A0', 'A1', 'A2', 'A3'],
                    'B': ['B0', 'B1', 'B2', 'B3'],
                    'C': ['C0', 'C1', 'C2', 'C3'],
                    'D': ['D0', 'D1', 'D2', 'D3']})

df2 = pd.DataFrame({'A': ['A4', 'A5', 'A6', 'A7'],
                    'B': ['B4', 'B5', 'B6', 'B7'],
                    'C': ['C4', 'C5', 'C6', 'C7'],
                    'D': ['D4', 'D5', 'D6', 'D7']})

# 按行连接两个DataFrame
result1 = pd.concat([df1, df2])
print(result1)

# 按列连接两个DataFrame,并忽略原始索引
result2 = pd.concat([df1, df2], axis=1, ignore_index=True)
print(result2)

输出结果:

    A   B   C   D
0  A0  B0  C0  D0
1  A1  B1  C1  D1
2  A2  B2  C2  D2
3  A3  B3  C3  D3
0  A4  B4  C4  D4
1  A5  B5  C5  D5
2  A6  B6  C6  D6
3  A7  B7  C7  D7

    0   1   2   3   4   5   6   7
0  A0  B0  C0  D0  A4  B4  C4  D4
1  A1  B1  C1  D1  A5  B5  C5  D5
2  A2  B2  C2  D2  A6  B6  C6  D6
3  A3  B3  C3  D3  A7  B7  C7  D7

test_data[‘eid’].map(test_data[‘eid’])

此代码没有任何效果,因为它只是将test_data数据帧的“eid”列映射到自身。它基本上返回相同的列,无需任何修改。也许代码中有错误或缺少一些附加信息。

corr

pandas的corr方法用于计算两个或多个Series或DataFrame之间的相关系数矩阵。

语法示例:

DataFrame.corr(method='pearson', min_periods=1)

参数说明:

  • method:相关系数的计算方法,可以是’pearson’、‘kendall’或’spearman’。默认为’pearson’。
  • min_periods:最少需要的非NA值数量,如果少于该值则返回NA。默认为1。

返回值:

  • 返回一个DataFrame,包含两两元素之间的相关系数。

示例:

import pandas as pd

# 构造测试数据
data = {'A': [1, 2, 3, 4, 5], 'B': [5, 4, 3, 2, 1], 'C': [2, 3, 4, 5, 6]}
df = pd.DataFrame(data)

# 计算相关系数
corr_matrix = df.corr()

# 输出结果
print(corr_matrix)

输出结果:

          A         B         C
A  1.000000 -1.000000  0.993399
B -1.000000  1.000000 -0.993399
C  0.993399 -0.993399  1.000000

.value_counts()

The .value_counts() method is used to calculate a frequency count of unique values in a pandas Series. It returns a new Series containing counts of unique values in descending order of frequency.

For example, if you have a Series called colors that contains the following values:

colors = pd.Series(['red', 'blue', 'green', 'red', 'red', 'yellow', 'blue', 'red', 'green'])

Running colors.value_counts() would return:

red       4
blue      2
green     2
yellow    1
dtype: int64

This shows that the value ‘red’ appeared 4 times, ‘blue’ and ‘green’ each appeared 2 times, and ‘yellow’ appeared only once in the Series.

pandas的groupby()

The .groupby() method in pandas is used to group a DataFrame by one or more columns. Once a DataFrame is grouped, we can perform aggregate functions on the grouped data such as mean, sum, count, etc.

For example, let’s say we have a DataFrame called sales_data containing sales information for different product categories and regions:

import pandas as pd

sales_data = pd.DataFrame({
    'Category': ['Electronics', 'Books', 'Electronics', 'Books', 'Books', 'Electronics'],
    'Region': ['North', 'South', 'North', 'South', 'North', 'South'],
    'Sales': [1500, 2000, 1000, 2500, 800, 1200]
})

If we want to calculate the total sales by category, we can use the .groupby() method as follows:

total_sales_by_category = sales_data.groupby('Category')['Sales'].sum()

This will group the sales_data DataFrame by the ‘Category’ column and calculate the sum of the ‘Sales’ column for each category. The resulting total_sales_by_category Series will look like:

Category
Books          5300
Electronics    3700
Name: Sales, dtype: int64

We can also group by multiple columns by passing a list of column names to the .groupby() method. For example, if we want to calculate the total sales by category and region, we can use the following code:

total_sales_by_category_region = sales_data.groupby(['Category', 'Region'])['Sales'].sum()

This will group the sales_data DataFrame by both the ‘Category’ and ‘Region’ columns and calculate the sum of the ‘Sales’ column for each combination of category and region. The resulting total_sales_by_category_region Series will look like:

Category      Region
Books         North     800
              South    3500
Electronics   North    1500
              South    1200
Name: Sales, dtype: int64

你可能感兴趣的:(机器学习)