numpy取随机数的方式
常用的其实就只有4个,还都是0-1之间,分别是 rand() randn() randint() random()
第一个表示的是0-1之间取多少个均匀分布,第二个是从标准正态分布中抽多少个,第三个抽到的结果是整数,第四个是单纯的随机数
如果要得到0-5的随机数呢?
——将结果 * 5
关于sklearn中接口对于数据的要求
所有接口中要求输入X_train和X_test的部分,输入的特征矩阵必须至少是一个二维矩阵。 sklearn不接受任何一维矩阵作为特征矩阵被输入
思考:sklearn中的接口所使用的数据是否一定得是表格?
不一定的,数组也可以使用,但是要注意,数组也必须是2维以上的。
如果数据本身是1维的,该如何上升一个维度呢?
x = x[:, np.newaxis] # 给指定的行或者列升维,不过要注意赋值给原本的x
y = y[:, np.newaxis]
python自带的sorted和np的np.sort 有什么区别?在建模时会有什么影响?
python中的sorted在将 数组 排序以后,返回的结果类型 会变成列表!
而np中的sorted在将 数组排序后,返回的结果类型 依旧是 数组
而且要注意,np中的sort没有ed
x = np.sort(np.random.rand(100) * 5)
type(x) # 返回numpy.ndarray
x = sorted(np.random.rand(100) * 5)
type(x) # 返回list
# 对于list类型的数据,是无法画图的
plt.figure()
plt.scatter(x, y, color = 'black', label = 'sin')
plt.legend()
plt.show()
数据预处理阶段的顺序与注意事项:
1.数据预处理的方式应当为:
剔除掉无关特征与缺失值过多的特征---->进行缺失值处理,要么进行缺失值填补,要么删除掉有缺失值的样本---->将数据特征进行变化,比如 性别这一特征要转化为数值类型的数值
2.应当在数据预处理整个过程结束之后,再 分别提取出特征矩阵和标签矩阵,而不要在一开始就区分特征矩阵和标签矩阵。
原因很简单:因为原数据集中,特征矩阵是需要进行数据预处理的,有缺失值的存在。如果在预处理之前就区分了特征矩阵和标签矩阵,那之后就没法删除掉标签矩阵中对应的数值了
表格中筛选指定的列:(方法常忘记)
# 数据处理完毕,提取特征矩阵和标签矩阵
feature = data.loc[:,data.columns != 'Survived']
target = data.loc[:,data.columns == 'Survived']
data.columns != 'Survived' # 会返回一个bool值的列表
# 如果是选择特定的两个或三个列,那么则
feature = data.loc[:, ['Sex', 'Embarked']] # 加上 [] 将两个特征合并起来
常忘记的函数:返回最大值所在位置的索引
如果是列表,那么可用:lst.index(max(lst))
如果是数组,那么为:np.argmax( arr )
python中并没有argmax这个函数,只有numpy中才有,而且是适用于数组(列表也适用)