Spark MLlib特征处理:Normalizer 正则化---原理及实战

 

 

实战
import org.apache.spark.ml.feature.Normalizer
import org.apache.spark.sql.SQLContext
import org.apache.spark.{SparkContext, SparkConf}

object NormalizerExample {
  def main(args: Array[String]) {
    val conf = new SparkConf().setAppName("NormalizerExample").setMaster("local[6]")
    val sc = new SparkContext(conf)
    val sqlContext = new SQLContext(sc)

    // LibSVMFile的格式:标签 索引:值
    // 0 2:51 3:253 5:253
    // 1 2:124 3:253 4:255
    // 1 2:145 3:253 5:211
    val dataFrame = sqlContext.read.format("libsvm").load("data/libsvm.txt")

    // L1正则化
    val normalizer = new Normalizer().setInputCol("features").setOutputCol("normFeatures")
      // 设置 L1正则化
      .setP(1.0)
    // 正则化转换
    val l1NormData = normalizer.transform(dataFrame)
    //l1NormData.foreach(println)
    // 结果:
    // [1.0,(5,[1,2,4],[145.0,253.0,211.0]),(5,[1,2,4],[0.23809523809523808,0.4154351395730706,0.3464696223316913])]
    // [0.0,(5,[1,2,4],[51.0,253.0,253.0]),(5,[1,2,4],[0.09156193895870736,0.4542190305206463,0.4542190305206463])]
    // [1.0,(5,[1,2,3],[124.0,253.0,255.0]),(5,[1,2,3],[0.1962025316455696,0.40031645569620256,0.40348101265822783])]
    // 结果分析:
    // 如:向量(5,[1,2,4],[145.0,253.0,211.0])
    // p-Norm=145.0+253.0+211.0=609.0   p=1
    // L1正则化:(5,[1,2,4],[145.0/609.0,253.0/609.0,211.0/609.0])
    // 正则化结果:(5,[1,2,4],[0.23809523809523808,0.4154351395730706,0.3464696223316913])]


    // L2正则化
     val l2InfNormData = normalizer.transform(dataFrame, normalizer.p -> 2)
    l2InfNormData.foreach(println)
    // 结果:
    // [0.0,(5,[1,2,4],[51.0,253.0,253.0]),(5,[1,2,4],[0.1411129915384288,0.7000311148867153,0.7000311148867153])]
    // [1.0,(5,[1,2,4],[145.0,253.0,211.0]),(5,[1,2,4],[0.40284772269065683,0.702899819591284,0.5862128930188178])]
    // [1.0,(5,[1,2,3],[124.0,253.0,255.0]),(5,[1,2,3],[0.3263044910373298,0.6657664212293906,0.6710293968912829])]
    // 结果分析:
    // 如:向量(5,[1,2,4],[145.0,253.0,211.0])
    // p-Norm=math.sqrt(145*145+253*253+211*211)=359.9374945737107 p=2
    // L2正则化:(5,[1,2,4],[145.0/p-Norm,253.0/p-Norm,211.0/p-Norm])
    // 正则化结果:(5,[1,2,4],[0.40284772269065683,0.702899819591284,0.5862128930188178])]
    sc.stop()

  }

}
--------------------- 
作者:wangpei1949 
来源:CSDN 
原文:https://blog.csdn.net/wangpei1949/article/details/53150089?utm_source=copy 
版权声明:本文为博主原创文章,转载请附上博文链接!

### 回答1: 这是一个conda安装包时出现的错误,具体是安装默认包中的charset-normalizer-2..4-pyhd3eb1b_时出现了问题。可能是网络连接不稳定或者包文件损坏导致的。建议检查网络连接,或者尝试重新安装该包。 ### 回答2: 这个错误可能是由于conda安装包时出现了问题而导致的。错误的消息指出,在安装package 'defaults::charset-normalizer-2.0.4-pyhd3eb1b0_0'时发生了错误。 要解决这个问题,可以首先尝试使用下面的命令来更新conda和安装包: ``` conda update conda conda update --all ``` 如果这些命令没有解决问题,那么可以尝试卸载并重新安装当前问题的包。可以使用以下命令卸载该包: ``` conda uninstall charset-normalizer ``` 接下来,再次尝试安装该包: ``` conda install charset-normalizer ``` 如果这些方法都没有解决问题,那么可能需要重置conda环境。可以使用以下命令来重置conda: ``` conda env remove -n <name_of_env> ``` 注意,这将删除名为'name_of_env'的虚拟环境,并删除其中所有安装的包。如果您想要保留已安装的包,并且只是重置conda环境,请不要使用该命令。 总之,这个错误提示的意思是在安装默认的charset-normalizer-2.0.4-pyhd3eb1b0_0包时发生了错误。可以尝试更新conda和安装包,卸载并重新安装当前问题的包,或者重置conda环境。 ### 回答3: 这个错误的意思是安装默认的Anaconda库时,出现了一个名为'charset-normalizer-2.0.4-pyhd3eb1b0_0'包的安装错误。通常这种错误是由于网络问题或者包的文件损坏造成的。 解决这种错误可以尝试以下几种方法: 1. 检查网络连接是否正常,确保网络速度和稳定性,重新尝试安装包。 2. 清除conda缓存,然后重新尝试安装包。可以使用命令'conda clean -all'来清除conda缓存。 3. 更新conda版本,或者删除并重新安装conda,重新尝试安装包。 4. 对于包文件损坏的情况,可以尝试删除并重新安装出现问题的包,或者从其他可靠的镜像源下载并安装包。 5. 升级操作系统,确保系统版本和依赖库是最新的版本,以避免出现文件冲突和兼容性问题。 总之,出现这种错误时可以先排除网络问题和缓存问题,然后尝试清理和更新conda以及重新安装出现问题的包。如果还不能解决问题,则可能需要从更深层次去解决,比如检查操作系统和系统依赖库的问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值