分类数据用summary()进行分析时结果出现Class和Mode

summary():对数据进行汇总统计,输出结果包含了多个统计量,比如最小值、最大值、中位数、均值、缺省值等。

  • 如果data中有分类数据,直接用summary(),会得出如下结果:例如gender显示的是其数据对应的属性:长度、数据结构、存储类型
 gender                    
 Length:167         
 Class :character   
 Mode  :character     
  • 那解决这个问题,就是把字符型改成因子型,具体做法和结果如下:
> data$gender<-as.factor(data$gender)
> summary(data)
gender           
       :  1   #1表示的是data中的第一个分类变量的汇总统计信息
 Female:94
 Male  :73     

当变量的计量类型为分类型或顺序型时,直接summary(data)无法得到统计频数等,需将其转换为因子(因子是R中的一种特殊的向量),有两种方法:

  • as.factor(向量名/data$变量名)

    • 缺点:无法对应顺序型变量
  • factor(向量名/data$变量名,ordered=TRUE/FALSE)

    • ordered为TRUE表示顺序型变量,为False表示分类型变量

文章内容是在学习R语言过程中的一些心得,目前还在学习阶段是个渣渣,欢迎各位大佬在评论区留言。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
由于缺乏 JAFFE 数据集,我们无法提供直接运行的代码和结果。但是,我们可以提供以下示例代码,您可以自己下载 JAFFE 数据集并进行测试。 示例代码: 1. 导入必要的库 ``` import tensorflow as tf from tensorflow.keras.preprocessing.image import ImageDataGenerator from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Dense, Dropout, Flatten, Conv2D, MaxPooling2D from tensorflow.keras import applications from tensorflow.keras.optimizers import Adam ``` 2. 加载数据集 ``` train_dir = 'jaffe/train' test_dir = 'jaffe/test' train_datagen = ImageDataGenerator(rescale=1./255) test_datagen = ImageDataGenerator(rescale=1./255) train_generator = train_datagen.flow_from_directory( train_dir, target_size=(224, 224), batch_size=32, class_mode='categorical') test_generator = test_datagen.flow_from_directory( test_dir, target_size=(224, 224), batch_size=32, class_mode='categorical') ``` 3. 加载预训练的 VGG16 模型 ``` vgg16 = applications.VGG16(weights='imagenet', include_top=False, input_shape=(224, 224, 3)) ``` 4. 停止一些层的训练 ``` for layer in vgg16.layers[:-4]: layer.trainable = False ``` 5. 构建模型 ``` model = Sequential() model.add(vgg16) model.add(Flatten()) model.add(Dense(256, activation='relu')) model.add(Dropout(0.5)) model.add(Dense(7, activation='softmax')) model.summary() ``` 6. 编译和训练模型 ``` model.compile(optimizer=Adam(lr=0.0001), loss='categorical_crossentropy', metrics=['accuracy']) history = model.fit_generator( train_generator, steps_per_epoch=train_generator.samples//train_generator.batch_size, epochs=50, validation_data=test_generator, validation_steps=test_generator.samples//test_generator.batch_size) ``` 7. 分析训练结果 ``` import matplotlib.pyplot as plt acc = history.history['accuracy'] val_acc = history.history['val_accuracy'] loss = history.history['loss'] val_loss = history.history['val_loss'] epochs = range(len(acc)) plt.plot(epochs, acc, 'b', label='Training accuracy') plt.plot(epochs, val_acc, 'r', label='Validation accuracy') plt.title('Training and validation accuracy') plt.legend() plt.figure() plt.plot(epochs, loss, 'b', label='Training loss') plt.plot(epochs, val_loss, 'r', label='Validation loss') plt.title('Training and validation loss') plt.legend() plt.show() ``` 运行结果: 训练过程中,将看到类似以下输出: ``` Epoch 1/50 15/15 [==============================] - 8s 532ms/step - loss: 1.9611 - accuracy: 0.1641 - val_loss: 1.8715 - val_accuracy: 0.1875 Epoch 2/50 15/15 [==============================] - 7s 493ms/step - loss: 1.8781 - accuracy: 0.2193 - val_loss: 1.7585 - val_accuracy: 0.2708 Epoch 3/50 15/15 [==============================] - 7s 491ms/step - loss: 1.7656 - accuracy: 0.2926 - val_loss: 1.6399 - val_accuracy: 0.3646 ... ``` 训练完成后,可以通过上述代码中的 `plot` 函数来可视化训练过程和结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值