Python分析建模,日常问题整理(四)
确认过时间,离发工资还有四周。
2018.08.13~2018.08.19
numpy的argmax、arange方法对哑变量的转化
a = numpy.array([[1, 5, 5, 2],
[9, 6, 2, 8],
[3, 7, 9, 1]])
numpy.argmax(a, axis=0) # 输出每个向量最大值索引
numpy.argmax(a, axis=1) # 输出最大值索引
numpy.equal(result_max, test_max) #一一对应的元素,如果相等返回true,不相等返回false
numpy的方法真的很好用,运算十分快,虽然pd也可以写方法进去,但是就是不如numpy快。
tem = (numpy.arange(3) == np.array([[2],[1],[0],[3]])).astype(int)
将数值变量转化为哑变量,分类为numpy.arange(2) ,即[0,1]
如果数据为0,则返回true,如果数据为1,返回false。
np.astype(int) 能将所有的true转化为1,所有的False转化为0
这样就可以将数据转化为0,1哑变量了。
np.argmax(tem,axis = 1)
将哑变量转化为数值。
type(df.ix[:,1:2]) 或者type(df.iloc[:,1:2])的数据类型是dataframe
type(df['b']) 的数据类型是Series
df.ix[:,1:2].values 的数据形式是多个数组[[2],[4],[1]]
df['b'].values 的数据形式是一个数组[2,4,1]
将dataframe的某列转化为哑变量
如果一共有三个类,那么只需转化为两列哑变量,如果n各类,只需转化为n-1列哑变量。
# 方法一:
(np.arange(2)==pd.DataFrame([0,1,1,0,1]).values).astype(int)
# 方法二:
from keras.utils.np_utils import to_categorical
to_categorical(pd.DataFrame([0,1,1,0,1]).values, num_classes = 2)