zoukankan      html  css  js  c++  java
  • 向量余弦值(Cosine)(C#)

    接前面一篇TF-IDF的代码,用其结果来计算出向量的余弦值的代码

    View Code
    using System;
    using System.Collections.Generic;
    using System.Text;

    namespace Cluster
    {
        
    static class Cosine
        {
            
    /// <summary>
            
    /// 计算向量余弦值
            
    /// </summary>
            
    /// <param name="vector1"></param>
            
    /// <param name="vector2"></param>
            public static double Calculate(Dictionary<intdouble> vector1, Dictionary<intdouble> vector2)
            {
                
    double dotProduct = CalcDotProduct(vector1, vector2);
                
    double length1 = CalcLength(vector1);
                
    double length2 = CalcLength(vector2);
                
    double cosine = dotProduct / (length1 * length2);

                
    return cosine;
            }

            
    /// <summary>
            
    /// 计算向量长度(vector length)
            
    /// </summary>
            
    /// <param name="vector"></param>
            
    /// <returns></returns>
            private static double CalcLength(Dictionary<intdouble> vector)
            {
                
    double length = 0;
                
    foreach (KeyValuePair<intdouble> kvp in vector)
                {
                    length 
    += Math.Pow(kvp.Value, 2);
                }
                
    return Math.Sqrt(length);
            }

            
    /// <summary>
            
    /// 计算向量点积(dot product)/内积(inner product)
            
    /// </summary>
            
    /// <param name="vector1"></param>
            
    /// <param name="vector2"></param>
            
    /// <returns></returns>
            private static double CalcDotProduct(Dictionary<intdouble> vector1, Dictionary<intdouble> vector2)
            {
                
    double dotProduct = 0;
                
    foreach (KeyValuePair<intdouble> kvp in vector1)
                {
                    
    if (vector2.ContainsKey(kvp.Key))
                    {
                        dotProduct 
    += kvp.Value * vector2[kvp.Key];
                    }
                }
                
    return dotProduct;
            }
        }
    }
  • 相关阅读:
    微信公众平台接口获取时间戳为10位,java开发需转为13位
    redis实现哨兵机制
    redis配置主从复制
    C 语言字符 和字符串输出
    C 小写字母编程大写并输出
    C语言计算机器运行时间
    C 猜数游戏
    C 产生随机码 (输入数字来产生)
    C 产生随机码
    C 语言链表操作例程 (待完善)
  • 原文地址:https://www.cnblogs.com/live41/p/2013041.html
Copyright © 2011-2022 走看看